結果

問題 No.3040 Aoiスコア
ユーザー sasa8uyauya
提出日時 2025-02-28 21:46:13
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 832 bytes
コンパイル時間 192 ms
コンパイル使用メモリ 82,352 KB
実行使用メモリ 86,016 KB
最終ジャッジ日時 2025-06-20 20:56:14
合計ジャッジ時間 4,855 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 23 TLE * 1 -- * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

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
    for i in range(c[2]+1):
      for j in range(c[2]-i+1):
        if i+j<=c[2]:
          ans+=fa[c[2]]*fb[i]*fb[j]*fb[c[2]-i-j]%M*(c[0]+i)*(c[1]+j)*p24[c[2]-i-j]*p26[qc-c[2]-(S[s]=="?")]%M
          ans%=M
print(ans)
0