結果
| 問題 |
No.2530 Yellow Cards
|
| コンテスト | |
| ユーザー |
timi
|
| 提出日時 | 2024-02-13 14:06:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,213 bytes |
| コンパイル時間 | 504 ms |
| コンパイル使用メモリ | 82,444 KB |
| 実行使用メモリ | 277,560 KB |
| 最終ジャッジ日時 | 2024-09-28 18:22:49 |
| 合計ジャッジ時間 | 21,796 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 14 TLE * 3 |
ソースコード
mod=998244353
N,K=map(int, input().split())
def xgcd(a, b):
x0, y0, x1, y1 = 1, 0, 0, 1
while b != 0:
q, a, b = a // b, b, a % b
x0, x1 = x1, x0 - q * x1
y0, y1 = y1, y0 - q * y1
return a, x0, y0
def modinv(a, m):
g, x, y = xgcd(a, m)
if g != 1:
raise Exception('modular inverse does not exist')
else:
return x % m
def f(x,y):
return x*10000+y
def ff(z):
x,y=z//10000,z%10000
return x,y
gt=modinv(N,mod)
from collections import deque
d=deque()
d.append((0,0))
dp=[[0]*(N+1) for i in range(K//2+1)]
V=[[-1]*(N+1) for i in range(K//2+1)]
dp[0][0]=1;V[0][0]=0
for i in range(K):
nd=deque();DD={}
while d:
r,y=d.popleft()
p=N-y
c=dp[r][y]
if y!=0:
a=(y*gt*c)%mod
if V[r+1][y-1]==-1:
V[r+1][y-1]=i+1
nd.append((r+1,y-1))
dp[r+1][y-1]+=a
dp[r+1][y-1]%=mod
if p!=0:
a=(p*gt*c)%mod
if V[r][y+1]==-1:
V[r][y+1]=i+1
nd.append((r,y+1))
dp[r][y+1]+=a
dp[r][y+1]%=mod
d=nd
D=DD
ans=0
for r in range(K//2+1):
for y in range(N+1):
if V[r][y]==K:
p=N-y
c=r+y+p
ans+=c*dp[r][y]
ans%=mod
print(ans)
timi