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

Codeforces Round #285 (Div. 2)

はい。xo---(0/0) 985(-42)
A問題の読み間違いで落としたのですげー悔しい。。。
http://codeforces.com/contest/501

A. Contest

ざっくりと大意

・max(3p/10, p-p/250*t)でMishaとVasyaのスコアを比較して勝者の名前か引分かを出力する。

方針のようなもの

・問題文の式のとおりに計算して比較する。中黒っぽく見えるのはカンマであって左と右の式を区切る記号なことに注意。

a,b,c,d=map(int,raw_input().split())
l=["Misha","Vasya","Tie"]
ans=chk=0


def jg(p,t):
    sc=max((3*p)/10,p-(p/250)*t)
    return sc


m=jg(a,c)
v=jg(b,d)
print l[0] if m>v else l[1] if m<v else l[2]

問題文の式を中黒と読み間違えて左右を+や*とか&で繋ごうとしなければmaxのスコアを計算して勝負の判定すれば大丈夫なはず。

B. Misha and Changing Handles

ざっくりと大意

・名前変更のクエリがあるので纏める。
・例えばMishaは Misha -> ILoveCodeforces -> MikeMirzayanov と名前を変更しているので纏めると Misha MikeMirzayanov になる。

方針のようなもの

・クエリが最大でも1000件だけど複数回の変更の人の探し方次第ではTLEあるかもしれないので気をつける。

n=int(raw_input())
ans=chk=0
l,m=[],[]

while n:
    n-=1
    a,b=map(str,raw_input().split())
    if a not in m:
        m.append(b)
        l.append([a,b])
        chk+=1
    else:
        m.remove(a)
        m.append(b)
        for i in range(chk):
            if l[i][-1]==a:
                l[i].append(b)
                break
print chk
if chk:
    for i in l:
        print i[0],i[-1]

名前の変更が他の人と被って同名になって行えないような不正なクエリは混ざっていないようで名前処理を新規か追記で保存して最初と最後の名前を出力すれば大丈夫。

実際にコンテスト中に手を出したのはBまでここから下は後で解説とか読んでから

C. Misha and Forest