結果
問題 |
No.3040 Aoiスコア
|
ユーザー |
👑 ![]() |
提出日時 | 2025-03-01 19:53:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 116 ms / 1,000 ms |
コード長 | 1,103 bytes |
コンパイル時間 | 269 ms |
コンパイル使用メモリ | 82,412 KB |
実行使用メモリ | 78,008 KB |
最終ジャッジ日時 | 2025-06-20 21:02:55 |
合計ジャッジ時間 | 3,121 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
N,M = map(int,input().split()) S = input() lis = [ [] for i in range(N) ] for i in range(M): A,B = map(int,input().split()) A -= 1 B -= 1 lis[A].append(B) lis[B].append(A) qnum_base = 0 for i in range(N): if S[i] == "?": qnum_base += 1 mod = 998244353 ans = 0 for v in range(N): aoiq = [0,0,0,0] if S[v] not in "o?": continue if S[v] == "o": qnum = qnum_base else: qnum = qnum_base-1 for i in lis[v]: if S[i] == "a": aoiq[0] += 1 elif S[i] == "o": aoiq[1] += 1 elif S[i] == "i": aoiq[2] += 1 elif S[i] == "?": aoiq[3] += 1 now = aoiq[0] * aoiq[2] * pow(26,qnum,mod) % mod if aoiq[3] >= 1: now += aoiq[0] * aoiq[3] * pow(26,qnum-1,mod) % mod now %= mod now += aoiq[3] * aoiq[2] * pow(26,qnum-1,mod) % mod now %= mod if aoiq[3] >= 2: now += aoiq[3] * (aoiq[3]-1) * pow(26,qnum-2,mod) % mod now %= mod ans += now # print (now) ans %= mod print (ans % mod)