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

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

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

Codeforces Round #333 (Div.2)

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

A. Two Bases

ざっくりと大意

・長さnの数列xが右から見るとそれぞれがb進数で1桁目、2桁目になっている。同様に長さmの数列yも。。
・それから作られるXとYとを比較した大小関係の結果を出力する。

方針のようなもの

・変換する。

python

def sol(k,s):
    t=0
    for a,i in enumerate(s[::-1]):
        t+=i*(k**a)
    return t

n,b=map(int,raw_input().split())
x=map(int,raw_input().split())
n2,b2=map(int,raw_input().split())
y=map(int,raw_input().split())
print '=' if sol(b,x)==sol(b2,y) else '>' if sol(b,x)>sol(b2,y) else '<'

右からそれぞれの数と b0 , b1 ...を掛けたものの総和を比較。

B. Approximating a Constant Range

ざっくりと大意

・差が1以内の連続した区間の最大の長さがいくつか??

方針のようなもの

・先頭から探す。

python

#TLE解決できず しゃくとりは無理っぽい
n=int(raw_input())
#n,k=map(int,raw_input().split())
l=map(int,raw_input().split())
ans=1
i=0
memo=[l[0],0]
while i<n-1:
    cnt=1
    chk=-1
    if (n-1)-i<ans: break
    for j in range(i+1,n):
        #print memo
        if l[j-1]!=memo[0]:
            memo[0]=l[j-1]
            memo[1]=j-1
        if l[j-1]==l[j] or l[i]==l[j]:
            cnt+=1
        elif (abs(l[j-1]-l[j])==1 and chk==-1) or l[j]==chk:
            chk=l[j]
            cnt+=1
        else:
            break
    ans=max(ans,cnt)
    i=memo[1]
print ans

はい。TLE解決せず。単純なしゃくとりでは無理っぽいので後で。