Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35193 | swzzzz | 【S】T2 | C++ | 运行超时 | 76 | 1000 MS | 10356 KB | 916 | 2024-11-28 16:21:10 |
#include<bits/stdc++.h> using namespace std; #define N 2003 #define mod 998244353 int n; bool s[N]; long long dp[N][N]; int cnt; int main(){ ios::sync_with_stdio(0); cin>>n; char ch; for(int i=1;i<=n;i++){ cin>>ch; s[i]=(ch=='1'); cnt+=(s[i]==0); } for(int i=0;i<=n;i++) dp[0][i]=1; for(int i=1;i<=n;i++){ if(i==1 && s[1]==1){ dp[1][0]=1; continue; } for(int j=0;j<=n;j++){ if(s[i]){ (dp[i][j]+=dp[i-1][j]*(i-j))%=mod; }else{ (dp[i][j]+=dp[i-1][j-1]*(j-1))%=mod; for(int k=0;k<j;k++){ (dp[i][j]+=dp[i-1][k])%=mod; } } } } long long ans=0; for(int i=cnt;i<=n;i++){ (ans+=dp[n][i])%=mod; } cout<<ans<<endl; return 0; }