社区讨论

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 条回复,欢迎继续交流。

正在加载回复...