Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35146 A21μΘ_wjy 【S】T2 C++ 通过 100 29 MS 68220 KB 840 2024-11-28 13:13:34

Tests(12/12):


#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=2007; const int mod=998244353; inline void Add(int &x,int y){ x+=y;x-=(x>=mod?mod:0); } int n; bool s[maxn]; int dp[maxn][maxn]; int Sum[maxn][maxn]; signed main(){ cin>>n; for(int i=1;i<=n;i++){ char t;cin>>t; s[i]=t-'0'; } dp[0][0]=Sum[0][0]=1; for(int i=0;i<n;i++){ Sum[i][0]=dp[i][0]; for(int j=1;j<=i;j++)Sum[i][j]=(Sum[i][j-1]+dp[i][j])%mod; if(s[i+1]==0){ for(int j=0;j<=i;j++)Add(dp[i+1][j+1],j*dp[i][j]%mod); for(int j=1;j<=i+1;j++)Add(dp[i+1][j],Sum[i][j-1]); } else for(int j=0;j<=i;j++)Add(dp[i+1][j],dp[i][j]*(i-j+1)%mod); } int ans=0; for(int i=0;i<=n;i++)Add(ans,dp[n][i]); cout<<ans<<endl; }


测评信息: