啊 这个自己A掉了
照着Dp 模拟就可以了!
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define LL long long
const int MO = 998244353;
char s[5];
int n;
void f(int &i,int &a1,int &a0)
{
a1=1;
a0=1;
for(;i<n;)
{
i++;
scanf("%s",s+1);
if(s[1]=='|') break;
a0=(a0+a1)%MO;
}
}
int main()
{
cin >> n;
int a0,a1,i=1;f(i,a1,a0);
for(;i<n;)
{
int b1,b0;
f(i,b1,b0);
a1=(a1+(LL)a0*b1%MO)%MO;
a0=(LL)a0*b0%MO;
if(i==n) break;
}
if(s[1]=='|')
{
int b1=1,b0=1;
a1=(a1+(LL)a0*b1%MO)%MO;
a0=(LL)a0*b0%MO;
}
// cout<< a0<<' '<<a1<<endl;
cout << (a0+a1)%MO << endl;
return 0;
}