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

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

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

Codeforces Round #336 (Div.2)

はい。
http://codeforces.com/contest/608

A. Saitama Destroys Hotel

ざっくりと大意

・最上階から1秒で1つずつしか降りられず、無限に何人でも乗れるエレベーター。フロアは0階からs階まである。
・エレベーターに乗ってくる予定の人リストがn件分。f階でt秒の時に人が乗ろうとしてくるので先についたら待たねばならない。

python

n,s=map(int,raw_input().split())
d={}
for i in range(n):
    f,t=map(int,raw_input().split())
    if d.has_key(f):
        d[f]=max(d[f],t)
    else:
        d[f]=t
ans=chk=0
while s:
    if d.has_key(s):
        ans=max(ans,d[s])
    s-=1
    ans+=1
print ans

Noteはちょっと意味がよくわからん。何人の乗客が待ってるかなんて情報は入力データにない気がするし、解答にも影響しないし何言ってるのかわからん。
多分、入力データのf階は重複する場合があると思うのでtは大きい方の値で処理する必要があり。コンテスト当時と書き方が変わったけどs階から0階までシミュレートっぽいことしたのはあまり変わりなし。もっと楽な方法があるのかもしれないけどデータ件数が最大100件で最上階も最大で1000階なので多少効率悪くてもどうにでもなるはず。

B. Hamming Distance Sum

ざっくりと大意

・0,1の差の絶対値を取って総和がいくつか? ・サンプル1、Noteは多分こんな感じ??

sample

01
 01
  01
   01
00111

python

#TLEします
a=raw_input()
b=raw_input()
la,lb=len(a),len(b)
ans=chk=0
t=lb-la
for i in range(lb):
    tmp=max(0,i-t)
    tmp2=min(tmp+t+1,i+1)
    if b[i]=='0':
        ans+=a[tmp:tmp2].count('1')
    else:
        ans+=a[tmp:tmp2].count('0')
print ans

for文は一つでもやってることは多重ループと大して変わらないしTLEもやむなし。。また後で。