当前位置: 首页 > news >正文

CSP-S2025 员工招聘

CSP-S2025 员工招聘

\(f_{i,j,k}\) 表示考虑前 \(i\) 天,有 \(j\) 个人未录用,对于 \(c_p\le j\)\(p\)\(k\) 个填在 \([i+1,n]\)。设 \(cnt_x\) 表示 \(c_p=x\) 的数量,\(pre_x\)\(cnt\) 的前缀和。

边界:\(f_{0,0,cnt_0}=1\)

\(i\) 转移到 \(i+1\)\([1,i]\) 中有 \(rest=i-pre_j+k\) 个空位。

  • \(k\) 个人中选一个填到 \(i+1\),这时 \(j'=j+1\),枚举 \(cnt_{j+1}\) 个数中有 \(l\) 个填在 \([i+1,n]\)

    \(f_{i,j,k}\times k\times A^{rest}_{cnt_{j+1}-l}\times \binom{cnt_{j+1}}l\to f_{i+1,j+1,k-1+l}\)

  • \(s_{i+1}=1\)\(j'=j\)

    \(f_{i,j,k}\to f_{i+1,j,k}\)

  • \(s_{i+1}=0\)\(j'=j+1\),从 \(cnt_{j+1}\) 个数中选择一个填在 \(i+1\),同样枚举 \(l\in [0,cnt_{j+1}-1]\)

    \(f_{i,j,k}\times cnt_{j+1}\times A^{rest}_{cnt_{j+1}-1-l}\times \binom{cnt_{j+1}-1}l\to f_{i+1,j+1,k+l}\)

  • \(s_{i+1}=0\)\(j'=j+1\),此时把 \(i+1\) 空出来不填,枚举 \(l\in [0,cnt_{j+1}]\)

    \(f_{i,j,k}\times A^{rest}_{cnt_{j+1}-l}\times \binom{cnt_{j+1}}l\to f_{i+1,j+1,k+l}\)

那么 \(Ans=\sum_{i=0}^{n-m}f_{n,i,0}\times (n-pr_i)!\)。时间复杂度 \(O(n^3)\)

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
const int N=505,mod=998244353;
int n,m,x,c[N],pr[N],a[N];
ll f[2][N][N],fc[N],iv[N];
void init(){iv[0]=iv[1]=fc[0]=1;for(int i=2;i<=n;i++) iv[i]=iv[mod%i]*(mod-mod/i)%mod;for(int i=1;i<=n;i++) fc[i]=fc[i-1]*i%mod,iv[i]=iv[i-1]*iv[i]%mod;
}
ll A(int n,int m){if(n<m) return 0;return fc[n]*iv[n-m]%mod;
}
ll C(int n,int m){if(n<m) return 0;return fc[n]*iv[n-m]%mod*iv[m]%mod;
}
char s[N];
void tr(ll &x,ll y){x+=y;if(x>=mod) x-=mod;
}
int main(){freopen("employ.in","r",stdin);freopen("employ.out","w",stdout);scanf("%d%d%s",&n,&m,s+1);for(int i=1;i<=n;i++) scanf("%d",&x),c[x]++;pr[0]=c[0];for(int i=1;i<=n;i++) pr[i]=pr[i-1]+c[i];init();f[0][0][c[0]]=1;for(int i=1;i<=n;i++){int u=i&1,v=u^1;memset(f[u],0,sizeof(f[u]));for(int j=0;j<i;j++)for(int k=0;k<=pr[j];k++){int rest=i-1-pr[j]+k;if(k){for(int l=0;l<=c[j+1];l++)tr(f[u][j+1][k-1+l],f[v][j][k]*k%mod*A(rest,c[j+1]-l)%mod*C(c[j+1],l)%mod);}if(s[i]=='1') tr(f[u][j][k],f[v][j][k]);else{for(int l=0;l<c[j+1];l++)tr(f[u][j+1][k+l],f[v][j][k]*c[j+1]%mod*A(rest,c[j+1]-1-l)%mod*C(c[j+1]-1,l)%mod);for(int l=0;l<=c[j+1];l++)tr(f[u][j+1][k+l],f[v][j][k]*A(rest,c[j+1]-l)%mod*C(c[j+1],l)%mod);}}}ll ans=0;for(int i=0;i<=n-m;i++)tr(ans,f[n&1][i][0]*fc[n-pr[i]]%mod);printf("%lld\n",ans);return 0;
}
http://www.jsqmd.com/news/28649/

相关文章:

  • 2025 年 11 月商标注册机构权威推荐榜:专业申请与高效服务口碑之选,商标注册公司推荐
  • 「学习笔记」PHP 函数安全
  • 2025 年 11 月气动执行器厂家推荐排行榜,齿轮齿条执行器,拨叉式执行器,角行程执行器,不锈钢执行器,三段式执行器,快速执行器,执行器附件公司推荐
  • 2025 年 11 月虎头鲨养殖孵化基地厂家推荐排行榜,浙江省大型虎头鲨养殖,虎头鲨孵化,虎头鲨养殖基地公司推荐
  • 电子丨DC-DC中的升压、降压、升降压电路解析
  • 001 vue3-admin项目说明与创建
  • 《代码大全 2》观后感(四):函数设计 —— 拆解复杂问题的 “手术刀”
  • LeetCode算法模式全解:多语言实现核心数据结构与算法
  • 《代码大全2》观后感(三):变量命名——藏在细节里的“代码语言”
  • 2025 年 11 月石墨制品厂家最新推荐,专业制造与品牌保障口碑之选
  • 251101
  • 3321
  • agent skills - 邂逅那青春
  • 2232323
  • Jenkins 安装
  • IDEA 忽略 pom.xml 依赖警告
  • [buuctf]jarvisoj_test_your_memory
  • FinalShell破解专业版(SSH工具) v4.5.12 中文绿色版
  • 2025 年 11 月磁混凝厂家最新推荐,实力品牌深度解析采购无忧之选!
  • HarfBuzz 实战:五大核心API 实例详解【附iOS/Swift实战示例】
  • Java 获取 MultipartFile
  • 革命性的智能文档处理与问答引擎
  • 20251101
  • 第12天(中等题 越长越合法滑动窗口)
  • 正式发布!2025年11月广州心理咨询机构哪家专业?
  • 大模型开发 - 02 Spring AI Concepts - 详解
  • Zookeeper环境搭建
  • 2025 年 11 月降膜蒸发器,结晶蒸发器,真空浓缩器厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 十月第四周组会报告ppt--CBANet面向学习中心和边界感知的3D牙齿分割实例表示(Computersgraphics) 2025.8
  • 2025 年 11 月废水蒸发器,多效蒸发器,低温蒸发器厂家最新推荐,产能、专利、环保三维数据透视