結果
問題 |
No.1353 Limited Sequence
|
ユーザー |
![]() |
提出日時 | 2021-01-17 14:37:11 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,117 bytes |
コンパイル時間 | 202 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 293,312 KB |
最終ジャッジ日時 | 2024-11-29 16:04:16 |
合計ジャッジ時間 | 109,306 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 11 TLE * 35 |
ソースコード
#1353 N, L, R = map(int, input().split()) A = list(map(int, input().split())) mod = 998244353 DP = [[[0]*((allsum+1)//(last+1)) for last in range(min(N, allsum+1))] for allsum in range(R)] """ allsum+1 総和 last+1 最後の数 <= 総和 length+1 最後の数の連続数 """ for allsum in range(R): for last in range(min(N, allsum+1)): for length in range((allsum+1)//(last+1)): if allsum == last and length == 0: DP[allsum][last][length] = 1 #print(DP) elif length > 0: if allsum+1 >= 2*last+1: if A[last] >= length+1: DP[allsum][last][length] = DP[allsum-last-1][last][length-1] else: DP[allsum][last][length] = sum([sum(v) for v in DP[allsum-last-1]]) try: DP[allsum][last][length] -= sum(DP[allsum-last-1][last]) except IndexError: pass DP[allsum][last][length] %= mod ans = 0 for i in range(L-1, R): ans += sum([sum(v) for v in DP[i]]) print(ans%mod) #print(DP)