Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35171 | liuziming | 【S】T2 | C++ | 解答错误 | 0 | 26 MS | 62240 KB | 729 | 2024-11-28 14:06:23 |
#include<bits/stdc++.h> using namespace std; #define int long long #define mod 998244353 int n,dp[2010][2010],g[2010]; string s; signed main(){ cin>>n; cin>>s; for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ if(i==0&&j!=0) break; dp[i+1][j]=(dp[i+1][j]+g[j-1])%mod; //g[j]=g[j-1]+dp[i][j]; if(s[i]=='0'){ dp[i+1][j+1]=(dp[i+1][j+1]+dp[i][j]*j)%mod; g[j]=g[j-1]+dp[i][j]; }else{ if(j>i) break; dp[i+1][j]=(dp[i+1][j]+dp[i][j]*(i+1-j))%mod; } } }int ans=0; for(int i=1;i<=n;i++){ ans=(ans+dp[n][i])%mod; }cout<<ans<<'\n'; }