結果
| 問題 |
No.2807 Have Another Go (Easy)
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:57:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,036 bytes |
| コンパイル時間 | 314 ms |
| コンパイル使用メモリ | 82,260 KB |
| 実行使用メモリ | 52,476 KB |
| 最終ジャッジ日時 | 2025-03-31 17:58:38 |
| 合計ジャッジ時間 | 4,751 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 TLE * 1 -- * 44 |
ソースコード
MOD = 998244353
def main():
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0])
M = 2
k = int(data[2])
Cs = list(map(int, data[3:3+k]))
# Precompute the total_sequences
max_sum = 2 * N + 6
dp = [0] * (max_sum + 1)
dp[0] = 1
total_sequences = 0
for s in range(0, 2 * N):
current = dp[s]
if current == 0:
continue
for D in range(1, 7):
new_s = s + D
if new_s >= 2 * N:
total_sequences = (total_sequences + current) % MOD
else:
dp[new_s] = (dp[new_s] + current) % MOD
dp[s] = 0
# Process each query Ci
for Ci in Cs:
forbidden_count = 0
F0 = [0] * N
F1 = [0] * N
F0[0] = 1
for s in range(N):
current = F0[s]
if current == 0:
continue
for D in range(1, 7):
new_s = s + D
if new_s >= 2 * N:
forbidden_count = (forbidden_count + current) % MOD
else:
if new_s < N:
if new_s != Ci:
F0[new_s] = (F0[new_s] + current) % MOD
else:
new_b = new_s - N
if new_b != Ci:
F1[new_b] = (F1[new_b] + current) % MOD
for b in range(N):
current = F1[b]
if current == 0:
continue
s_in_a1 = N + b
for D in range(1, 7):
new_s = s_in_a1 + D
if new_s >= 2 * N:
forbidden_count = (forbidden_count + current) % MOD
else:
new_b = b + D
if new_b != Ci:
F1[new_b] = (F1[new_b] + current) % MOD
ans = (total_sequences - forbidden_count) % MOD
print(ans)
if __name__ == '__main__':
main()
lam6er