またしょうもないミスをする…。
http://abc039.contest.atcoder.jp/assignments
A - 高橋直体
愚直に表面積を計算するだけ。
X,Y,Z=map(int,raw_input().strip().split(" ")) print (X*Y+Y*Z+Z*X)*2
B - エージェント高橋君
Nを0.25乗してもよいし、Xは1000を超えないのでXを1から順に探しても良い。
print int((input()+0.001)**0.25)
C - ピアニスト高橋君
鍵盤をドから初めて何周分か書いておこう。
入力がその(0-originで)0,2,4,5,7,9,11文字目から20文字分と一致するなら、それぞれドレミファソラシドとなる。
T=raw_input().strip() S="WBWBWWBWBWBWWBWBWWBWBWBWWBWBWWBWBWBWWBWBWWBWBWBW" A=["Do","Re","Mi","Fa","So","La","Si"] B=[0,2,4,5,7,9,11] for i in range(7): if T == S[B[i]:B[i]+20]: print A[i]
D - 画像処理高橋君
各セルに白黒の2値が振られたグリッドが与えられる。
収縮を行うとは、各セル及びその隣接8マスに1個でも色が塗られているセルがあれば、そのセルに色を塗る、という処理を全セル同時に1回行うことに相当する。
1度収縮を行った状態のグリッドが与えられる。収縮前のグリッドが構築可能なら1例を示せ。
入力値、すなわち収縮後にも色が塗られていないマスがあるということは、収縮前はそのマスと周囲8マスは色が塗られていなかったはずである。
それ以外のセルは元々塗られていたと考えて良い。
これによりまず収縮前のグリッドの候補を構築できる。
あとはこのグリッドに再度収縮を行い、元と一致するか確認するとよい。
H,W=map(int,raw_input().strip().split(" ")) S = [] T = [] G = [] for y in range(H): S.append(list(raw_input().strip())) T.append(["#"]*W) G.append(["."]*W) for y in range(H): for x in range(W): for tx in range(x-1,x+2): for ty in range(y-1,y+2): if tx >= 0 and tx < W and ty >= 0 and ty < H and S[y][x]==".": T[ty][tx] = "." for y in range(H): for x in range(W): for tx in range(x-1,x+2): for ty in range(y-1,y+2): if tx >= 0 and tx < W and ty >= 0 and ty < H and T[y][x]=="#": G[ty][tx] = "#" if S != G: print "impossible" else: print "possible" for t in T: print "".join(t)
まとめ
なんかDの問題はこれっぽいなと思ったりしていた。
TopCoder SRM 560 Div1 Medium DrawingPointsDivOne - kmjp's blog