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

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

Codeforces Beta Round #48

はい。最終更新日:2014/05/14
http://codeforces.com/contest/51

A. Cheaterius's Problem

implementation

ざっくりと大意

・Cheateriusは占い師で魔法使いで、嘘つき。
・彼はCheateriusのお守りを作っている。
・2*2の正方形のためにドミノをペアで固める。
・お守りは0,180,270度回せるがひっくり返すのは禁止。
・n個のペアになったドミノが**区切りで与えられて、それが何種類あるか??

方針のようなもの

・ドミノ1000個なら全部全部確認しても大丈夫じゃね?

AC出すのに翌日昼まで掛かるとかしょぼすぎた。。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
#start = time.clock()
n=input()
l= [[] for _ in range(n)]
chk,jk=0,0
for i in range(n*3-1):
    w=raw_input()
    if w=='**':
        chk+=1
    else:
        if len(l[chk]):
            w=w[1],w[0]
            l[chk]+=w
        else:
            l[chk]+=w

for i in range(1,len(l)):
    stp=0
    for j in range(len(l)):
        if i==j or stp==1: break
        for k in range(4):
            if l[i]==l[j]:
                stp+=1
                jk+=1
                break
            else:
                l[j]=[l[j][1],l[j][2],l[j][3],l[j][0]]
print len(l)-jk

そういえばcodeforcesの復旧不能鯖落ちでデータが飛んだ期間の分が提出してないことになってたので再提出した。
ちなみに新しく書いたほうが遅かった。。。当時は翌日昼までかけてAC出したらしいので成長はしてるのかしてないのか。。。

n=int(raw_input())
ans=0
l=[[]]
for i in range(n*3-1):
    w=raw_input()
    if w=='**':
        l.append([])
    else:
        l[-1].append(w)
chk=[l[0]]
for i in range(1,n):
    for j in range(len(chk)):
        i9=[l[i][1][0]+l[i][0][0],l[i][1][1]+l[i][0][1]]
        i18=[l[i][1][1]+l[i][1][0],l[i][0][1]+l[i][0][0]]
        i27=[l[i][0][1]+l[i][1][1],l[i][0][0]+l[i][1][0]]
        if (l[i] not in chk) and (i9 not in chk) and (i18 not in chk) and (i27 not in chk):
            chk.append(l[i])
print len(chk)

B. bHTML Tables Analisys

ざっくりと大意

・また今度