本文共 973 字,大约阅读时间需要 3 分钟。
#includeusing namespace std;typedef long long ll;const int maxn=1e5+1;const ll mod=998244353;ll dp[maxn][201][3];int n,a[maxn];int main(){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); for(int i=1;i<=200;++i) if(a[1]==-1||a[1]==i) dp[1][i][0]=1; for(int i=2;i<=n;++i) { for(int j=1;j<=200;++j) if(a[i]==-1||a[i]==j) dp[i][j][1]=(dp[i-1][j][0]+dp[i-1][j][1]+dp[i-1][j][2])%mod; ll sum=0; for(int j=1;j<=200;++j) { if(a[i]==-1||a[i]==j) dp[i][j][0]=sum; sum=(sum+dp[i-1][j][0]+dp[i-1][j][1]+dp[i-1][j][2])%mod; } sum=0; for(int j=200;j>=1;--j) { if(a[i]==-1||a[i]==j) dp[i][j][2]=sum; sum=(sum+dp[i-1][j][1]+dp[i-1][j][2])%mod; } } ll ans=0; for(int i=1;i<=200;++i) ans=(ans+dp[n][i][1]+dp[n][i][2])%mod; printf("%lld\n",ans);}
转载地址:http://vrewz.baihongyu.com/