読者です 読者をやめる 読者になる 読者になる

Codeforces Round #378 (Div.2) 参加記

はい。 ox---- (0/0) 1143(-26)
http://codeforces.com/contest/733
Aのみでした。しょぼい。B問題は問題文を読解できていないのをサンプルからエスパーして出したものがpreは通っても当然のsys落ちだった。

A. Grasshopper And the String

ざっくりと大意

・A,E,I,O,U,Yの母音なら着地出来る。他の子音は飛び越す。
・サンプル図のように文字列前からスタートして文字列過ぎをゴールとして、最大の飛び越し幅がいくつか??

Python2

s=raw_input()
ans=chk=1
for i in s:
    if i in 'AIUEOY':
        ans=max(chk,ans)
        chk=1
    else:
        chk+=1
print max(ans,chk)

数え方を1から開始して、子音なら加算して母音なら飛び越しの最大値を確認して1にリセット。文字列の終端が子音の場合の対策に文字列末尾に母音をセルフで付け足すか、回答出力時にmaxを出力させる。

B. Parade

ざっくりと大意

・n列の兵士がパレードで行進する。\(l_i\)兵士は左足からで合計値Lとする、\(r_i\)兵士は右足からで合計値Rとする。
・パレードの美しさは|L-R|の最大値で決まる。全く入れ替えないか、i番目のl,rを1つだけ入れ替えて美しさを最大にする。

Python2

n=int(raw_input())
ans=chk=tmp=0
l=r=0
a,b=[0]*n,[0]*n

for i in range(n):
    x,y=map(int,raw_input().split())
    a[i],b[i]=x,y
    l+=x
    r+=y
ans=abs(l-r)
for i in range(n):
    p=l-a[i]+b[i]
    q=r-b[i]+a[i]
    if ans<abs(p-q):
        ans=abs(p-q)
        chk=i+1
print chk

コンテスト中は問題文を読解できていなかった。しょぼい。。。後から他の人のコード見て、問題文を読み直してなんとか意味がわかった。ただ、解法は|l>r|と|l<r|が最大値になるのをどちらかだけで良いと思ったのだが、なぜダメなのかわからず。。。