結果
| 問題 |
No.86 TVザッピング(2)
|
| コンテスト | |
| ユーザー |
tnodino
|
| 提出日時 | 2022-03-05 21:00:13 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,475 bytes |
| コンパイル時間 | 121 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2025-06-20 14:01:09 |
| 合計ジャッジ時間 | 2,826 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 WA * 2 |
ソースコード
def CheckPoint(N, M, L):
P = []
dx = [0, 0, 1, 1]
dy = [0, 1, 0, 1]
for x in range(N+1):
for y in range(M+1):
C = []
flg = [False] * 4
cnt = 0
for i in range(4):
nx,my = x + dx[i], y + dy[i]
if L[nx][my] == '.':
C.append((nx, my))
flg[i] = True
cnt += 1
if cnt % 2 == 0:
continue
if cnt == 1:
X = C[0]
elif cnt == 3:
if flg[0] and flg[1] and flg[2]:
X = C[0]
elif flg[0] and flg[1] and flg[3]:
X = C[1]
elif flg[0] and flg[2] and flg[3]:
X = C[1]
elif flg[1] and flg[2] and flg[3]:
X = C[2]
if not X in P:
P.append(X)
return P
def Check4(L, P):
def dfs(x, y, gx, gy, dx, dy):
if x == gx and y == gy:
return
if L[x][y] == '#':
print('NO')
exit()
L[x][y] = '#'
dfs(x + dx, y + dy, gx, gy, dx, dy)
X,Y = [list(i) for i in zip(*P)]
dfs(X[0], Y[0], X[2], Y[2], 1, 0)
dfs(X[2], Y[2], X[3], Y[3], 0, 1)
dfs(X[3], Y[3], X[1], Y[1], -1, 0)
dfs(X[1], Y[1], X[0], Y[0], 0, -1)
return L
def Check6(L, P):
def dfs(x, y, gx, gy, dx, dy):
if x == gx and y == gy:
return
if L[x][y] == '#':
print('NO')
exit()
L[x][y] = '#'
dfs(x + dx, y + dy, gx, gy, dx, dy)
X,Y = [list(i) for i in zip(*P)]
dfs(X[2], Y[2], X[1], Y[1], -1, 0)
dfs(X[1], Y[1], X[0], Y[0], 0, -1)
dfs(X[0], Y[0], X[4], Y[4], 1, 0)
dfs(X[4], Y[4], X[5], Y[5], 0, 1)
dfs(X[5], Y[5], X[3], Y[3], -1, 0)
dfs(X[3], Y[3], X[2], Y[2], 0, -1)
return L
def CheckDots(N, M, L):
for x in range(N+1):
for y in range(M+1):
if L[x][y] == '.':
return False
return True
N,M = map(int,input().split())
A = [list(input()) for _ in range(N)]
B = [['#'] * (M+2) for _ in range(N+2)]
for i in range(N):
for j in range(M):
B[i+1][j+1] = A[i][j]
P = CheckPoint(N, M, B)
if len(P) != 4 and len(P) != 6:
print('NO')
exit()
if len(P) == 4:
B = Check4(B, P)
elif len(P) == 6:
B = Check6(B, P)
if CheckDots(N, M, B):
print('YES')
else:
print('NO')
tnodino