結果
問題 | No.1845 Long Substrings |
ユーザー |
![]() |
提出日時 | 2025-03-20 18:47:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 123 ms / 2,000 ms |
コード長 | 696 bytes |
コンパイル時間 | 162 ms |
コンパイル使用メモリ | 82,332 KB |
実行使用メモリ | 107,632 KB |
最終ジャッジ日時 | 2025-03-20 18:47:57 |
合計ジャッジ時間 | 4,565 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 34 |
ソースコード
n = int(input()) a = list(map(int, input().split())) s = input().strip() MOD = 10**9 + 7 from collections import defaultdict last = defaultdict(int) dp = 1 # includes empty subsequence initially for i in range(n): c = s[i] m = a[i] prev_last = last[c] # Compute new_dp = (m+1)*dp - m*prev_last mod MOD term1 = (m + 1) * dp term2 = m * prev_last new_dp = (term1 - term2) % MOD # Compute new_last = m*dp - (m-1)*prev_last mod MOD term3 = m * dp term4 = (m - 1) * prev_last new_last = (term3 - term4) % MOD # Update dp and last[c] dp = new_dp last[c] = new_last # Subtract 1 for the empty subsequence answer = (dp - 1) % MOD print(answer)