結果
| 問題 | No.2040 010-1 Deletion |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-07-17 20:44:39 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 159 ms / 3,000 ms |
| + 225µs | |
| コード長 | 948 bytes |
| 記録 | |
| コンパイル時間 | 552 ms |
| コンパイル使用メモリ | 95,724 KB |
| 実行使用メモリ | 84,608 KB |
| 最終ジャッジ日時 | 2026-07-17 20:44:46 |
| 合計ジャッジ時間 | 6,424 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 33 |
ソースコード
mod = 998244353
def main():
N = 3001
X = 1500
n = int(input())
S = input()
dp = [0 for _ in range(2*N)]
a = 1
for idx in range(n):
s = S[idx]
ndp = [0 for _ in range(2*N)]
if s != "1":
ndp[2] = a
if s == "0":
a = 0
if s != "1":
for i in range(-X, X+1):
v0 = (i+1)*2
v1 = (i-1)*2
if -X <= v0//2 <= X:
ndp[v0] = (ndp[v0]+dp[i*2]) % mod
if -X <= v0//2 <= X:
ndp[v1] = (ndp[v1]+dp[i*2+1]) % mod
if s != "0":
for i in range(-X, X+1):
v = i*2+1
if -X <= v//2 <= X:
ndp[v] = (ndp[v]+dp[i*2]+dp[i*2+1]) % mod
dp = ndp
#print(dp[-10:] + dp[:10])
ans = a
for u in range(-X, 1, 2):
ans = (ans+dp[u*2]+dp[u*2+1]) % mod
return ans
print(main())
kidodesu