社区讨论
84ptsWA求调 悬赏一关
P14364[CSP-S 2025] 员工招聘参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mm5yin16
- 此快照首次捕获于
- 2026/02/28 14:45 上周
- 此快照最后确认于
- 2026/03/02 14:55 上周
WA #7,#8,#16,#17
CPP#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=505,mod=998244353;
int n,m,pri[N],fac[N]={0,1},f[N][N][N],ans;
string s;
void solve(){
cin>>n>>m>>s;
for(int i=1,c;i<=n;i++) cin>>c,pri[c]++;
for(int i=1;i<=n;i++) pri[i]+=pri[i-1];
for(int i=2;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mod;
f[0][0][0]=1;
for(int i=0;i<n;i++) for(int j=0;j<=i;j++) for(int k=0;k<=i;k++){
if(s[i]=='0') f[i+1][j+1][k]=(f[i+1][j+1][k]+f[i][j][k])%mod;
else{
f[i+1][j][k]=(f[i+1][j][k]+f[i][j][k])%mod;
f[i+1][j][k+1]=(f[i+1][j][k+1]-1ll*f[i][j][k]*(pri[j]-k)%mod)%mod;
f[i+1][j+1][k+1]=(1ll*f[i][j][k]*(pri[j]-k)%mod)%mod;
}
}
for(int i=0;i<=n-m;i++)
for(int j=0;j<=n;j++)
ans=(ans+1ll*f[n][i][j]*fac[n-j]%mod)%mod;
cout<<(ans+mod)%mod;
}
signed main(){
cin.tie(0)->sync_with_stdio(0);
solve();
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...