結果
問題 |
No.801 エレベーター
|
ユーザー |
👑 ![]() |
提出日時 | 2025-07-13 20:27:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 423 ms / 2,000 ms |
コード長 | 771 bytes |
コンパイル時間 | 342 ms |
コンパイル使用メモリ | 82,288 KB |
実行使用メモリ | 77,808 KB |
最終ジャッジ日時 | 2025-07-13 20:27:14 |
合計ジャッジ時間 | 8,876 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
""" https://yukicoder.me/problems/no/801 推移先が区間なので、推移を簡略化できる """ mod = 10**9+7 N,M,K = map(int,input().split()) LR = [] for i in range(M): L,R = map(int,input().split()) LR.append( (L-1,R-1) ) dp = [0] * N dp[0] = 1 for _ in range(K): # 推移元累積輪 S = [i for i in dp] for i in range(len(S)-1): S[i+1] += S[i] S[i+1] %= mod S.append(0) # 推移先 ndp = [0] * N for l,r in LR: now = (S[r] - S[l-1]) % mod ndp[l] += now ndp[l] %= mod if r+1 < len(ndp): ndp[r+1] -= now ndp[r+1] %= mod for i in range(len(ndp)-1): ndp[i+1] += ndp[i] ndp[i+1] %= mod dp = ndp print (dp[N-1] % mod)