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

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

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

Codeforces Round #237 (Div. 2)

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

A. Valera and X

ざっくりと大意

・n*nの奇数の文字列がXを描くように並んでいるか??

方針のようなもの

・Xを描く判定の文字列を自分で用意して比較する。

ab=['NO','YES']
n=int(raw_input())
x=o=''
ans=1
w=raw_input()
x=w[0]
o=w[1]
if w[0]!=w[-1] or w.count(o)!=n-2:
    ans=0
l=[o for i in range(n)]
for i in range(1,n):
    s=raw_input()
    cp=l[:]
    cp[i]=x
    cp[i*-1-1]=x
    c=''.join(cp)
    if s!=c:
        ans=0
print ab[ans]

判定は自分で文字列を作ったほうが楽だった。一行目は初めなのでxooooxなど両端が同じ文字で中間は全て同じ文字になっているかを確認。2行目以降はxを反対側に近付けたものと入力を比較した。

B. Marathon

ざっくりと大意

・Valeraは左下座標(0,0)から始まる大きさaaの正方形の会場を反時計回りにnd+0.5の距離を走るマラソンに参加する。
・Valeraはd毎に水分補給をするために飲み物を用意しておく場所の座標はどこか??
・反時計回りなので0,0 -> a,0 -> a,a -> 0,a で0,0戻って1周になる。

方針のようなもの

・移動をシミュレートするが、dが1周以上回るものの周回は省略する。

a,d=map(float,raw_input().split())
n=int(raw_input())
ans=0
chk=[0,0]


def mawaru(m):
    while 1:
        if m[0]>a and m[1]==0:
            m=[a,m[0]-a]
        elif m[0]==a and m[1]>a:
            m=[a-(m[1]-a),a]
        elif m[0]<0 and m[1]==a:
            m=[0,a-abs(m[0])]
        elif m[0]==0 and m[1]<0:
            m=[abs(m[1]),0]
        else:
            break
    return m

if d%(a*4)==0.0:
    ido=0
else:
    ido=d%(a*4)

while 1:
    ans+=d
    if ans>n*d+0.5:
        break

    if chk[0]<=a and chk[1]==0:
        chk[0]+=ido
    elif chk[0]==a and chk[1]<=a:
        chk[1]+=ido
    elif chk[0]<=a and chk[1]==a:
        chk[0]-=ido
    elif chk[0]==0 and chk[1]<=a:
        chk[1]-=ido
    chk=mawaru(chk)
    print chk[0],chk[1]

すげーめんどくさかった。。誤差で死ななくて助かった。。