VK Cup 2012 Qualification Round 1
はい。
http://codeforces.com/contest/158
A. Next Round
ざっくりと大意
・k番目の人以上(a score equal to or greate)のスコアの人が通過者でその人数をカウントする??
・ただし、0はpositive scoreではないらしいのでカウントしない。
方針のようなもの
・リストの先頭から舐めて0より大きくk番目以上なら加算する。
n,k=map(int,raw_input().split()) l=[int(x) for x in raw_input().split()] ans=chk=0 for i in range(n): if l[i]>=l[k-1] and l[i]>0: ans+=1 print ans
B. Taxi
ざっくりと大意
・授業の後で学生の1~4人で構成されたn個のグループはPolycarpusを誕生日祝いのために訪ねた。
・4人乗れるtaxiで移動する。できるだけ詰め詰めで乗るが同じグループの人は分散しない。
方針のようなもの
・3人へ1人 > 2人へ2人 > 2人へ1人 >1人へ1人 こんな優先順位で詰めていけば大丈夫かな?
n=int(raw_input()) l=[int(x) for x in raw_input().split()] l.sort() ans=chk=l.count(4) if chk: l=l[:-chk] t=l.count(3) o=l.count(1) if t: if o>t: l=l[t:-t] else: l=l[o:-t] ans+=t w=l.count(2) o=l.count(1) if w: if w%2==0: l=l[:-w] ans+=w/2 else: if o>1: l=l[2:-w] ans+=(w/2)+1 elif o==1: l=l[1:-w] ans+=(w/2)+1 else: l=l[:-w] ans+=(w/2)+1 o=l.count(1) if o: if o%4==0: ans+=o/4 else: ans+=((o/4)+1) print ans
処理内容は複雑でないのに行数ばかり嵩んでしまった。
C. Cd and pwd commands
ざっくりと大意
・/からスタートしてcdでディレクトリ移動して、pwdで現在のディレクトリを出力。
方針のようなもの
・サンプルだと現在地、移動先をちょっと追加したり削除したりするだけだが実際には突然に/下から全く違うトコに行くこともあるがそれの処理がうまく書けずtest 7でWA。
n=int(raw_input()) ans=chk=0 l,chk=[],['/'] for i in range(n): l.append(raw_input().split()) for i in range(n): if l[i][0]=='pwd': print '/'.join(chk)[1:]+'/' else: k=l[i][1].split('/') for i in range(len(k)): if i==0 and k[i]==chk[-1]: pass elif k[i]=='..': chk.pop() elif k[i]!='': chk.append(k[i])
- Ice Sculptures
ざっくりと大意
・Berlandは256周年を祝うためにキャンパスの中央でn個の氷の彫像が作られる。
・彫像はn-gonで規則的に円周上に並べられ、時計回りで1からnまでナンバリング。
・正三角形が構成できるような規則的な抜き出し方をして最大で何点になるか??
・サンプルだと全部使うか、1個おきに使うかの2通りで選んでいる。方針のようなもの
・合計が最大になるようにだからおそらくマイナスを含んでもいいのかな?
#test 4でWA n=int(raw_input()) #n,k=map(int,raw_input().split()) l=[int(x) for x in raw_input().split()] ans=chk=0 ans=sum(l) for i in range(2): for j in range(2): chk=0 for k in range(i,n,j+1): chk+=l[k] ans=max(ans,chk) print ans
4個しか彫像がない場合に対応できず。。あとおそらく単純な連続か1つおきかしか見てないので彫像20000個で3つしか選ばない場合とか全然対応できない。