Codeforces Round #345 (Div.2)
はい。
http://codeforces.com/contest/651
A. Joysticks
ざっくりと大意
・ジョイスティック1つ目の充電状態が\(a_1\)、2つ目のは\(a_2\)である。充電器に繋ぐことが出来るのは1つだけである。
・使っていると充電が2減る。充電してると1増える。どちらかだけでも0になってしまうとゲームが終る。
・充電をやりくりしたときの最大のプレイ時間はいくつか。
Python2
l=map(int,raw_input().split()) ans=chk=0 while 1: if min(l)<1 or max(l)<2: break if l[0]<=l[1]: l[0]+=1 l[1]-=2 l[0]=min(l[0],100) else: l[0]-=2 l[1]+=1 l[1]=min(l[1],100) ans+=1 print ans
適当に少ない方に充電して充電は100まで、使うのにはどちらも2未満になったら終了で大丈夫だと思う。
B. Beautiful Paintings
ざっくりと大意
・数列aを並べ直して \(a_{i+1}\) > \(a_i\)に出来るのは何箇所か??
・サンプル1は10,20,30,40,50にして4箇所。サンプル2は100,200,100,200にして2箇所。
Python2
n=int(raw_input()) #n,k=map(int,raw_input().split()) l=map(int,raw_input().split()) d={} for i in l: if i in d: d[i]+=1 else: d[i]=1 l=list(set(l)) l.sort() l=l[::-1] ans=chk=0 while 1: if len(l)<2: break tmp=l.pop(0) if tmp>l[0]: ans+=1 d[tmp]-=1 if d[tmp]>0: l.append(tmp) print ans
最小のものとその次に小さいものを探した。特定の値がそれぞれ何個あるかは連想配列で登録。どんな値があるかはリストで管理する。先頭からpopで取り出して1個以上残る場合はappendで末尾に戻して、使い切った場合は戻さない感じにした。
C. Watchmen
ざっくりと大意
・ユークリッド距離とマンハッタン距離が等しいペアを探す?
・サンプル2が11にならない気がする、あとで