結果
問題 |
No.3098 Linear Reversi
|
ユーザー |
|
提出日時 | 2025-03-09 12:29:14 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,358 bytes |
コンパイル時間 | 262 ms |
コンパイル使用メモリ | 82,672 KB |
実行使用メモリ | 501,236 KB |
最終ジャッジ日時 | 2025-04-06 15:01:00 |
合計ジャッジ時間 | 12,283 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 WA * 2 TLE * 1 -- * 30 |
ソースコード
MOD=998244353 def solve(S): if S[0]=='?': T1='o'+S[1:] T2='x'+S[1:] return (solve(T1)+solve(T2))%MOD N=len(S) dp=[[0]*8 for i in range(N+1)] def update(i,j,k,l,val): if l>1: return b=j+ 2*k + 4*l dp[i][b]+=val dp[i][b]%MOD if S[0]=='o': dp[0][3]=1 else: dp[0][2]=1 for i in range(N): for b in range(8): val=dp[i][b] j=k=l=0 if b&1: j=1 if b&2: k=1 if b&4: l=1 if S[i]!='x': if (j==1): update(i+1,1,1,l,val) else: if k==1: update(i+1,1,0,l,val) else: update(i+1,1,0,l+1,val) if S[i]!='o': if (j==0): update(i+1,0,1,l,val) else: if k==1: update(i+1,0,0,l,val) else: update(i+1,0,0,l+1,val) ret=0 for b in range(8): ret+=dp[N][b] ret%=MOD return ret N=int(input()) S=input() print(solve(S))