結果
| 問題 | No.3743 World Mapper |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 17:52:04 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
RE
不安定
|
| 実行時間 | - |
| コード長 | 3,387 bytes |
| 記録 | |
| コンパイル時間 | 64 ms |
| コンパイル使用メモリ | 82,036 KB |
| 実行使用メモリ | 79,024 KB |
| 最終ジャッジ日時 | 2026-09-19 17:52:17 |
| 合計ジャッジ時間 | 5,257 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 4 |
| 部分点2 | 10 % | AC * 4 RE * 5 |
| 部分点3 | 10 % | AC * 4 RE * 10 |
| 部分点4 | 10 % | AC * 4 RE * 15 |
| 部分点5 | 10 % | AC * 4 RE * 20 |
| 部分点6 | 10 % | AC * 4 RE * 25 |
| 部分点7 | 10 % | AC * 4 RE * 30 |
| 部分点8 | 10 % | AC * 4 RE * 35 |
| 部分点9 | 10 % | AC * 4 RE * 40 |
| 満点 | 10 % | AC * 4 RE * 45 |
| 合計 | 5 * 10% = 50 点 |
ソースコード
from __future__ import annotations
import sys
sys.setrecursionlimit(2*10**7)
#↓codon===============================
import string
Alp_low=list(string.ascii_lowercase)
Alp_up=list(string.ascii_uppercase)
Digit="0123456789"
dij=[[0,1],[1,0],[0,-1],[-1,0]]
def nin():
return list(map(int,input().split()))
def deq(x):
return [i-1 for i in x]
mod=998244353
_factorial=[1]
def factorial(n):
while len(_factorial)<=n:
_factorial.append((_factorial[-1]*len(_factorial))%mod)
return _factorial[n]
_inv_factorial=[1]
def inv_factorial(n):
while len(_inv_factorial)<=n:
_inv_factorial.append((_inv_factorial[-1]*pow(len(_inv_factorial),mod-2,mod))%mod)
return _inv_factorial[n]
def binom(n,r):
if r>=mod:
raise ValueError("r is too big")
if n<0:
return 0
if r>n:
return 0
if r<0:
return 0
ans=((factorial(n)*inv_factorial(r))%mod*inv_factorial(n-r))%mod
return ans
def floyd_warshall(n, edges):
dist = [[0 if i == j else float("inf") for i in range(n)] for j in range(n)]
pred = [[None] * n for _ in range(n)]
for u, v, d in edges:
dist[u][v] = d
pred[u][v] = u
for k in range(n):
for i in range(n):
for j in range(n):
if dist[i][k] + dist[k][j] < dist[i][j]:
dist[i][j] = dist[i][k] + dist[k][j]
pred[i][j] = pred[k][j]
"""Sanity Check
for u, v, d in edges:
if dist[u] + d < dist[v]:
return None
"""
return dist, pred
import random
random.seed(0)
def main():
ans=[[], [], [[[286929], [132029]], [[116404, 258784]]], [[[10717, 158778], [268620, 88409], [183571, 62780]], [[75150, 150759, 124012], [282186, 148188, 106784]]], [[[156699, 82239, 256712], [273018, 166408, 276198], [90764, 241945, 288705], [146650, 174883, 27325]], [[38552, 38684, 25719, 198840], [72756, 231718, 191061, 40754], [26806, 19826, 221888, 98389]]], [[[105166, 92589, 205669, 172666], [294402, 75580, 274716, 3684], [285278, 233604, 268957, 200880], [153012, 295385, 70916, 95804], [16981, 53809, 177685, 64139]], [[135673, 196812, 58127, 148297, 137993], [162597, 16797, 171306, 25300, 237667], [121312, 280771, 215575, 300, 197077], [281670, 99161, 242113, 231217, 296148]]]]
n,=nin()
for i in ans[n][1]:
print(*i)
for i in ans[n][0]:
print(*i)
return
ans=[[],[]]
use=[i for i in range(1,3*10**5) if i.bit_count()<=10]
for n in range(2,6):
while True:
g=[]
v=[[] for _ in range(n)]
h=[[] for _ in range(n-1)]
for i in range(n):
for j in range(n):
for di,dj in [(0,1),(1,0)]:
if 0<=i+di<n and 0<=j+dj<n:
#w=random.randint(1,3*10**5)
w=random.choice(use)
if di==0:
v[i].append(w)
else:
h[i].append(w)
g.append((i*n+j,(i+di)*n+(j+dj),w))
g.append(((i+di)*n+(j+dj),i*n+j,w))
d=set(sum(floyd_warshall(n**2,g)[0],[]))
if len(d)==n**2*(n**2-1)//2+1:
ans.append([v,h])
break
print(ans)
if __name__=="__main__":
main()