ABC-325
A
解法
B
https://atcoder.jp/contests/abc325/tasks/abc325_b
#愚直
n = Integer().contentl = []for _ in range(n): l.append(Integer().content)
M = 0for time in range(24+1): tmp = 0 for j in l: if 9<(time+j[1])%24<=18: tmp+=j[0] M=max(M, tmp)print(M)
解法
を まで増加させつつ、 のときに を増加させ、 を出力する。
C
https://atcoder.jp/contests/abc325/tasks/abc325_c
#DFS/BFS
h,w = Integer().contentmap = Map(h,w).contentused = [[False]*w for _ in range(h)]ans = 0for i in range(h): for j in range(w): if map[i][j]=='.' or used[i][j]==True: continue queue = deque() queue.append((i,j)) while queue: p = queue.popleft() for k in range(8): ny, nx = p[0]+dy[k], p[1]+dx[k] if 0<=nx<w and 0<=ny<h and not used[ny][nx] and map[ny][nx]=='#': used[ny][nx] = True queue.append((ny, nx)) ans+=1print(ans)
解法
まず、迷路探索問題などで や を使うとき、探索目標は未探索のグリッドであるのを意識すると、今回の問題では探索対象をセンサーに変更するとよい。 また、普段の問題では**+状にしか追加しないが、今回は米**状に追加しないといけないのも注意。
D
解法
E