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

君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

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,,,ちょっと解説読んだり、ググったりして調べる。。。