結果
問題 |
No.3098 Linear Reversi
|
ユーザー |
|
提出日時 | 2025-03-09 12:38:11 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,301 bytes |
コンパイル時間 | 690 ms |
コンパイル使用メモリ | 81,996 KB |
実行使用メモリ | 295,840 KB |
最終ジャッジ日時 | 2025-04-06 15:00:53 |
合計ジャッジ時間 | 8,847 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 WA * 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))