結果
| 問題 | No.3040 Aoiスコア |
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 2025-02-28 21:52:13 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 834 bytes |
| 記録 | |
| コンパイル時間 | 229 ms |
| コンパイル使用メモリ | 82,104 KB |
| 実行使用メモリ | 85,700 KB |
| 最終ジャッジ日時 | 2025-06-20 20:57:07 |
| 合計ジャッジ時間 | 5,220 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 TLE * 1 -- * 2 |
ソースコード
n,m=map(int,input().split())
S=input()
e=[[] for i in range(n)]
for i in range(m):
a,b=map(int,input().split())
a-=1
b-=1
e[a]+=[b]
e[b]+=[a]
M=998244353
N=n
fa=[1]
for i in range(1,N+1):
fa+=[fa[-1]*i%M]
fb=[pow(fa[N],M-2,M)]
for i in reversed(range(1,N+1)):
fb+=[fb[-1]*i%M]
fb.reverse()
qc=S.count("?")
ans=0
p26=[1]
for i in range(n):
p26+=[p26[-1]*26%M]
p24=[1]
for i in range(n):
p24+=[p24[-1]*24%M]
for s in range(n):
if S[s]=="o" or S[s]=="?":
c=[0,0,0]
for t in e[s]:
if S[t]=="a":
c[0]+=1
if S[t]=="i":
c[1]+=1
if S[t]=="?":
c[2]+=1
da=0
for i in range(c[2]+1):
for j in range(c[2]-i+1):
da+=fb[i]*fb[j]*fb[c[2]-i-j]*(c[0]+i)*(c[1]+j)*p24[c[2]-i-j]%M
da%=M
ans+=da*fa[c[2]]*p26[qc-c[2]-(S[s]=="?")]
ans%=M
print(ans)
sasa8uyauya