Skip to content

ABC-325

A

解法


B

URLURL\:\to https://atcoder.jp/contests/abc325/tasks/abc325_b

#愚直

n = Integer().content
l = []
for _ in range(n):
l.append(Integer().content)
M = 0
for 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)

解法

timetime0240 \to 24 まで増加させつつ、9<time+Xi189 \lt time+X_{i} \le 18 のときに WiW_{i} を増加させ、Max(Sum(Wi))Max(Sum(W_{i})) を出力する。


C

URLURL\:\to https://atcoder.jp/contests/abc325/tasks/abc325_c

#DFS/BFS

h,w = Integer().content
map = Map(h,w).content
used = [[False]*w for _ in range(h)]
ans = 0
for 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+=1
print(ans)

解法

まず、迷路探索問題などで BFSBFSDFSDFS を使うとき、探索目標は未探索のグリッドであるのを意識すると、今回の問題では探索対象をセンサーに変更するとよい。 また、普段の問題では**+状にしか追加しないが、今回は米**状に追加しないといけないのも注意。


D

解法


E

解法