結果
| 問題 | No.3601 Queen Dist Sum with One Wall |
| コンテスト | |
| ユーザー |
Kude
|
| 提出日時 | 2026-07-24 23:45:24 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 1,074 ms / 2,000 ms |
| + 978µs | |
| コード長 | 2,469 bytes |
| 記録 | |
| コンパイル時間 | 251 ms |
| コンパイル使用メモリ | 95,976 KB |
| 実行使用メモリ | 99,872 KB |
| 最終ジャッジ日時 | 2026-07-24 23:45:44 |
| 合計ジャッジ時間 | 18,352 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 22 |
ソースコード
def solve(h, w, i, j, bi, bj):
ans = 2 * (h * w - 2)
if i > bi:
i = h-1-i
bi = h-1-bi
if j > bj:
j = w-1-j
bj = w-1-bj
if i != bi: ans -= w-1
else: ans -= bj - 1
if j != bj: ans -= h-1
else: ans -= bi - 1
lx = rx = i
ly = ry = j
d = min(lx, ly)
lx -= d
ly -= d
if i-j == bi-bj:
rx = bi-1
ry = bj-1
else:
d = min(h-1-i, w-1-j)
rx += d
ry += d
ans -= rx - lx
lx = rx = i
ly = ry = j
d = min(lx, w-1-ly)
lx -= d
ly += d
assert i+j != bi+bj
d = min(h-1-rx, ry)
rx += d
ry -= d
ans -= rx-lx
if j == bj:
i, j = j, i
bi, bj = bj, bi
h, w = w, h
if i == bi:
bj = max(bj+1, j + max(i, h-1-i)+1)
if bj < w:
ans += w - bj
jj = j + 2 * max(i, h - 1 - i)
if jj >= w:
jj -= (jj - (w - 1) + 1) // 2 * 2
if bj <= jj:
ans -= (jj - bj) // 2 + 1
return ans
for _ in range(int(input())):
h, w, i, j, bi, bj = map(int, input().split())
print(solve(h, w, i-1, j-1, bi-1, bj-1))
exit()
from collections import deque
def solve_naive(h,w,i,j,bi,bj):
d = [[-1] * w for _ in range(h)]
d[i][j] = 0
q = deque()
q.append((i, j))
while q:
i, j = q.popleft()
for dx, dy in (1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1):
x = i+dx
y = j+dy
while 0<=x<h and 0<=y<w and (x!=bi or y!=bj):
# if i == 1 and j == 0 and dx == 0 and dy == 1: print('A', x, y, d[i][j], d[x][y])
if d[x][y] == -1:
d[x][y] = d[i][j]+1
q.append((x, y))
x += dx
y += dy
res = sum(sum(di) for di in d) + 1
# res -= sum(di.count(3) for di in d)
# for di in d: print(*di)
return res
M = 8
for h in range(2,M):
for w in range(2,M):
for i in range(h):
for j in range(w):
for bi in range(h):
for bj in range(w):
if i == bi and j == bj: continue
res = solve(h, w, i, j, bi, bj)
res_n = solve_naive(h, w, i, j, bi, bj)
if res != res_n:
print(h, w, i, j, bi, bj)
print(res, res_n)
exit()
Kude