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

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

Codeforces Round #121 (Div.2)

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

A. Funky Numbers

ざっくりと大意

・nが三角数(http://ja.wikipedia.org/wiki/三角数)の2つの和であるか??

方針のようなもの

・全部組合せて総当りしたらメモリ足りなくなった。まぁそうですよね

#MLEでAC出ず
import itertools
#10**9+7
mod=1000000007
#start = time.clock()
n=int(raw_input())
m=int((n*2)**0.5)

#sが%1で余りがなければ三角数
def chker(x):
    s=((8*x+1)**0.5-1)/2
    return s
so=[int(x) for x in range(1,m+2)]
uc=so[:]
ko=list(itertools.product(so,uc))
ko=set(ko); ko=list(ko)
for i in ko:
    if 2*n==i[0]*(i[0]+1)+i[1]*(i[1]+1):
        print 'YES'
        exit()
print 'NO'

B. Walking in the Rain

ざっくりと大意

・Berlandの大通りにはn枚の耐久度\(a_i\)のタイルが敷かれている
・タイルは雨で壊れてしまい、壊れたタイルの上は誰も歩けない
・両端のどちらかが壊れるか、中間で2枚連続で壊れたところが出たら端から端への移動ができなくなる
・移動が可能なのは何日間か

方針のようなもの

・タイルが103枚ならminを見ていってminの値をメモして、ソレが端っこか若しくは隣のどちらかが既に壊れていないかをみればいいような

n=int(raw_input())
#n,k=map(int,raw_input().split())
l=[int(x) for x in raw_input().split()]
ans=f=0
chk=max(l)+1
while max(l)<chk or f==0:
    k=l.count(min(l))
    ans=min(l)
    for i in range(k):
        b=l.index(min(l))
        l[b]=chk
        if b==0 or b==n-1:
            f=1
        else:
            if l[b-1]==chk or l[b+1]==chk:
                f=1
print ans

C. Dynasty Puzzles

ざっくりと大意

・Berlandの王は名前が長いのが面倒で短縮し始めた
・先頭の文字だけを呼称に用いて例えば王様はVictorious Vasily PupkinなのでVVP
・そして相続においては相続人の略称の最初の文字は、前任者の略称の最後の文字と一致するように
・過去の名前のリストが出てきたので名前を繋げて最長になるものは何文字か??

方針のようなもの

pythonで通した人が2014/05/21時点で0人。test 10でTLEになっているのでまた今度