結果
問題 | No.2807 Have Another Go (Easy) |
ユーザー |
![]() |
提出日時 | 2025-03-26 15:51:15 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,669 bytes |
コンパイル時間 | 1,646 ms |
コンパイル使用メモリ | 81,792 KB |
実行使用メモリ | 312,428 KB |
最終ジャッジ日時 | 2025-03-26 15:52:11 |
合計ジャッジ時間 | 5,442 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 1 TLE * 1 -- * 44 |
ソースコード
import sysMOD = 998244353def main():input = sys.stdin.read().split()ptr = 0N = int(input[ptr]); ptr +=1M = int(input[ptr]); ptr +=1k = int(input[ptr]); ptr +=1Cs = list(map(int, input[ptr:ptr+k]))ptr +=kmax_sum = 2*N -1dp = [0]*(max_sum +1)dp[0] = 1for s in range(1, max_sum +1):for d in range(1,7):if s -d >=0:dp[s] = (dp[s] + dp[s-d]) % MODtotal =0for s in range(max(0, 2*N -6), 2*N):cnt = dp[s]mul = (s +7 -2*N)total = (total + cnt * mul) % MODpow6 = [1]*(2*N +7)for i in range(1, 2*N +7):pow6[i] = (pow6[i-1] *6) % MODfor C in Cs:C_mod = C % Nforbidden = [[0]*2 for _ in range(N)]if 0 != C_mod:forbidden[0][0] =1for s in range(0, 2*N):for a in 0,1:m = s - a*Nif not (0 <= m < N):continueif forbidden[m][a] ==0:continuecurrent = forbidden[m][a]for d in range(1,7):new_s = a*N +m +dif new_s >= 2*N:passelse:if a ==0:if new_s < N:new_a =0new_m = new_selse:new_a =1new_m = new_s -Nelse:new_s_val = N +m +dif new_s_val >=2*N:continueelse:new_a =1new_m = m +dif new_m == C_mod:continueif new_m >=N:continueforbidden[new_m][new_a] = (forbidden[new_m][new_a] + current) % MODforbidden_count =0for s in range(2*N -6, 2*N):if s >=2*N:continueif s <0:continuea = 1m = s -Nif m <0 or m >=N:continuemul = (s +7 -2*N)if m == C_mod:continuecnt = forbidden[m][1]forbidden_count = (forbidden_count + cnt * mul) % MODans = (total - forbidden_count) % MODprint(ans)if __name__ == '__main__':main()