結果
問題 | 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 + 7from collections import defaultdictlast = defaultdict(int)dp = 1 # includes empty subsequence initiallyfor i in range(n):c = s[i]m = a[i]prev_last = last[c]# Compute new_dp = (m+1)*dp - m*prev_last mod MODterm1 = (m + 1) * dpterm2 = m * prev_lastnew_dp = (term1 - term2) % MOD# Compute new_last = m*dp - (m-1)*prev_last mod MODterm3 = m * dpterm4 = (m - 1) * prev_lastnew_last = (term3 - term4) % MOD# Update dp and last[c]dp = new_dplast[c] = new_last# Subtract 1 for the empty subsequenceanswer = (dp - 1) % MODprint(answer)