Codeforces Round #365 (Div. 2)
はい。
http://codeforces.com/contest/703
A. Mishka and Game
ざっくりと大意
・MishkaとChrisが6面ダイスをn回振って、各回で目の大きさで勝ち負け判定をする。
・ゲーム全体では勝ち回数の多いほうが勝者となる。
Python2
n=int(raw_input()) M=C=0 for i in range(n): m,c=map(int,raw_input().split()) if m>c: M+=1 if m<c: C+=1 print 'Mishka' if M>C else 'Chris' if M<C else 'Friendship is magic!^^'
当時は1回でACしてたけどやり直すと油断して問題文を適当に流して無駄にWAした。各回ごとに勝敗判定してそれぞれの勝ち回数を記録しておけば大丈夫だと思う。
B. Mishka and trip
ざっくりと大意
・Mishkaは旅行先にあまり有名でない国XXXを選んだ。
・XXXはn個の都市で構成され、その内のk個が首都である。
・それぞれの都市は美しく、i番目の都市の美しさは\(c_i\)である。
・それぞれの都市は道路で連続してつながっていて1-2-3...n-1のようにつながっている。
・それぞれの首都は上記の道路とは別に他の都市とつながる道路がある。
・どの2つの都市にも1つの道路がある??(どの都市も最低2つ道路だし、全網羅でつながっているわけでもなく意味不明)
・都市間の道路の会計はそれぞれの都市の美しさの積に等しい。
Python2
n,k=map(int,raw_input().split()) c=map(int,raw_input().split()) chk=sum(c) #c={a+1:i for a,i in enumerate(map(int,raw_input().split()))} d=set(map(int,raw_input().split())) ans=0 for a,i in enumerate(c): if a+1 in d: ans+=i*(chk-c[a]) elif (a==0 and n not in d) or a not in d: ans+=c[a]*c[a-1] while 1: if len(d)==1: break tmp=d.pop() for i in d: ans-=c[tmp-1]*c[i-1] print ans
TLE,,,ちょっと解説読んだり、ググったりして調べる。。。