AtCoder 修行日記#51
51日目
ABCのB問題が終わりましたー!
次からは、いよいよアルゴリズムを考えられないと太刀打ちできないものが出てくるC問題を解いていきます。
勉強用のコンテンツはここから。
https://kenkoooo.com/atcoder/#/table/
進捗と一言感想
[B問題] 3問(残り0問)
ABC047:すぬけ君の塗り絵 2 イージー
参考にしてAC…よく考えれば普通に解けますね、これ…問題文で苦手意識を持ってしまった…。
w, h , n = map(int , input().split()) left = 0 right = w lower = 0 upper = h for i in range(n): x, y, a = map(int, input().split()) if a == 1: left = max(left, x) elif a == 2: right = min(x, right) elif a == 3: lower = max(lower, y) elif a == 4: upper = min(y, upper) if left > right or lower > upper: print(0) else: print((right-left)*(upper-lower))
ABC054:Template Matching
マッチするにはどうしたらと思ってましたが、そもそもある領域に対して、マッチしない条件がないかを探したほうがよかったという...。
参考にしてACでした。(要復習…)
n, m = map(int, input().split()) an = [input() for _ in range(n)] bm = [input() for _ in range(m)] for i in range(n-m+1) : for j in range(n-m+1) : match = True for k in range(m) : for l in range(m) : if an[i+k][j+l] != bm[k][l] : match = False break else : continue if match : print("Yes") exit() print("No")
ABC075:Minesweeper
いつもよりべた書き且つ冗長なコードを書きましたが、無事作れました。
セル系の一つずつの処理は慣れてきた感があります。
ただ、他の人のを見てるとコードはもっと短い…。
h, w = map(int, input().split()) sn = [input() for _ in range(h)] csn = [[0] * w for i in range(h)] for i in range(h): for j in range(w): if sn[i][j] == "#" : csn[i][j] = -1 if i-1 >= 0 and sn[i-1][j] == "." : csn[i-1][j] += 1 if i+1 <= h-1 and sn[i+1][j] == "." : csn[i+1][j] += 1 if j-1 >= 0 and sn[i][j-1] == "." : csn[i][j-1] += 1 if j+1 <= w-1 and sn[i][j+1] == "." : csn[i][j+1] += 1 if i-1 >= 0 and j-1 >= 0 and sn[i-1][j-1] == "." : csn[i-1][j-1] += 1 if i-1 >= 0 and j+1 <= w-1 and sn[i-1][j+1] == "." : csn[i-1][j+1] += 1 if i+1 <= h-1 and j-1 >= 0 and sn[i+1][j-1] == "." : csn[i+1][j-1] += 1 if i+1 <= h-1 and j+1 <= w-1 and sn[i+1][j+1] == "." : csn[i+1][j+1] += 1 for i in range(h): for j in range(w): if csn[i][j] == -1 : print("#", end='') else : print(csn[i][j], end='') print()
[C問題] 1問(残り155問)
ABC137:Divide the Problems
特になし。
n = int(input()) d = [int(num) for num in input().split()] d.sort() if d[len(d)//2] == d[len(d)//2 - 1]: print(0) else : print(d[len(d)//2] - d[len(d)//2 - 1])
参考
https://kenkoooo.com/atcoder/#/user/dandan611?userPageTab=AtCoder+Pie+Charts
Aizu Online Judge
www.youtube.com
目標
- まず、今年中に茶色コーダー
学習方針
- 参考:レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 - Qiita
- 一日一題。(C問題までは!)
- コンテストにもなるべく参加する
- ちなみに言語はpython。
- つまったら10分くらいで解説動画見る
以上。