結果
問題 | No.3040 Aoiスコア |
ユーザー |
👑 |
提出日時 | 2025-02-28 22:04:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 175 ms / 1,000 ms |
コード長 | 782 bytes |
コンパイル時間 | 152 ms |
コンパイル使用メモリ | 82,572 KB |
実行使用メモリ | 79,544 KB |
最終ジャッジ日時 | 2025-02-28 22:04:37 |
合計ジャッジ時間 | 3,058 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
from collections import Counter MOD = 998244353 N, M = map(int, input().split()) S = list(input()) q = S.count("?") graph = [[] for _ in range(N)] for i in range(M): u, v = map(int, input().split()) graph[u - 1].append(v - 1) graph[v - 1].append(u - 1) ans = 0 for i in range(N): if S[i] not in ("o", "?"): continue _q = q if S[i] == "o" else q - 1 cnt = Counter(S[j] for j in graph[i]) ans += cnt["a"] * cnt["i"] * pow(26, _q, MOD) ans %= MOD if _q >= 1: ans += cnt["?"] * cnt["i"] * pow(26, _q - 1, MOD) ans %= MOD ans += cnt["a"] * cnt["?"] * pow(26, _q - 1, MOD) ans %= MOD if _q >= 2: ans += cnt["?"] * (cnt["?"] - 1) * pow(26, _q - 2, MOD) ans %= MOD print(ans)