[CSP-S 2025] 员工招聘 / employ

news/2025/11/17 21:10:03/文章来源:https://www.cnblogs.com/STDJCY/p/19234406

P14364 [CSP-S 2025] 员工招聘 / employ

先初步分析一下录取的条件:

  • \(s_i=0\) 此时一定不会被录取
  • \(s_i=1\) 记之前被淘汰的人数为 \(j\),则若 \(c_{p_i}>j\) 则会被录取,\(c_{p_i}\le j\) 不会被录取。

考虑一个从前往后的 \(\mathrm{dp}\)\(f_{i,j}\) 表示填好了 \(p_{1\sim i}\),且有 \(j\) 个人被淘汰的方案数。但是这样需要考虑前面被用掉的 \(c\) 对后面的影响。

贡献延后计算

考虑再记一维,\(f_{i,j,k}\) 表示填好了 \(p_{1\sim i}\),且有 \(j\) 个人被淘汰的方案数此时有 \(k\) 个位置满足 \(c_{p_i}>j\)。转移较为复杂,记 \(cnt_j\) 表示 \(c_i=j\) 的个数,\(s_j\) 表示 \(c_i\le j\) 的个数,转移时分类讨论:

  • 这个人来面试 \((c_{p_i}>j)\)

    • \(s_i=1\)。 录取 \(p_i\),那么需要满足 \(c_{p_i}>j\),但是我们并不知道具体方案数,考虑将贡献延后计算,在 \(j\) 往后不断增加的过程中,我们在 \(c_{p_i}=j+1\) 的位置计算上当前位置的放置方案数,即先不算上放上这个位的方案数,得到 \(f_{i+1,j,k+1}\leftarrow f_{i,j,k}\)

    • \(s_i=0\)。无法录取 \(p_i\),应当转移到 \((j+1,k+1)\),不过别忘了要算上之前 \(c_{p_i}=j+1\) 的位置,枚举有 \(\ell\) 个位置等于 \(j+1\),将这些位置分配给 \(k+1\) 个位置,方案数 \(\binom{k+1}{\ell}\),选出这些位置有 \(\binom{cnt_{j+1}}{\ell}\) 种选法,分配完之后这些数可以乱排,因此最终得到转移:

      \[f_{i+1,j,k+1-\ell}\leftarrow \binom{k+1}{\ell}\binom{cnt_{j+1}}{\ell}\ell!\times f_{i,j,k} \]

  • 这个人不来面试 \((c_{p_i}\le j)\)

    这个人一定不会被录取,贡献到 \((j+1,k)\),需要算上当前位的 \(p_i\) 方案数,总共有 \(s_j\) 种选择,但是之前已经有 \((i-k)\) 个被选过了,因此当前位方案数为 \([s_j-(i-k)]\)。同时要类似算上 \(c_{p_i}=j+1\) 的贡献:

    \[f_{i+1,j+1,k-\ell}\leftarrow [s_j-(i-k)]\binom{k}{\ell}\binom{cnt_{j+1}}{\ell}\ell!\times f_{i,j,k} \]

考虑答案的计算,到 \(f_n\) 处所有的位置都放好了,直接枚举有 \(j\) 个人寄掉即可,那么自然 \(c_{p_i}>j\) 的位置就有 \(k=n-s_j\) 个,但是由于贡献延后计算的影响,这些位置还没有计算乱排的方案,于是答案为

\[\sum_{j=0}^{n-m} f_{n,j,n-s_j} (n-s_j)! \]

分析一下时间复杂度,看似是 \(O(n^4)\) 的,但是其实每次枚举的 \(\ell\le cnt_j\),其和是 \(O(n)\) 的,因此总时间复杂度是 \(O(n^3)\) 的,常数较大,不过可以通过。

容斥

上述贡献延后计算的做法太繁琐复杂,我们将重心从排列本身转到最终每个人的状态上,显然我们最后只是关注有多少个人面试成功了,因此可以枚举最终面试的状态 \(a\)\(a_i=0/1\) 表示 \(p_i\) 是否面试成功。则我们可以对每个 \(a\) 计算出满足的排列 \(p\) 的数量。考虑令 \(f_{i,j,k}\) 表示填好了 \(a_{1\sim i}\),有 \(j\) 个人面试失败,且钦定有 \(k\) 个位置已固定时计算上的贡献。转移依旧分类讨论:

  • \(s_i=0\)。 此时一定 \(a_i=0\)\(f_{i+1,j+1,k}\leftarrow f_{i,j,k}\)

  • \(s_i=1\)

    • \(a_i=0\)\(f_{i+1,j+1,k+1}\leftarrow f_{i,j,k}\times (s_j-k)\)

    • \(a_i=1\)。此处需要计算 \(c_{p_i}>j\) 的方案数,这个不好算,但是我们可以容斥,用总方案数减去存在 \([c_{p_i}\le j]\) 的方案数。总方案数就是不对此处做出钦定,\(f_{i+1,j,k}\leftarrow f_{i,j,k}\)

      容斥掉钦定 \([c_{p_i}\le j]\) 的方案数,得到 \(f_{i+1,j,k+1}\leftarrow -f_{i,j,k}\times (s_j-k)\)

最后是答案的计算,枚举 \(j\le n-m,k\),由于有 \(k\) 个位置已经固定,剩下的可以任意排列,方案数为 \((n-k)!\),因此不难得到答案为:

\[\sum_{j=0}^{n-m}\sum_{k=0}^{n} f_{n,j,k}(n-k)! \]

时间复杂度 \(O(n^3)\),非常简洁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/968303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20232410 2025-2026-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 掌握Metasploit的基础操作:模块搜索(search)、加载(use)、参数配置(set)、攻击执行(exploit/run)及会话管理(sessions)。 理解4类漏洞的核心原理,明确漏洞与靶机开放端口、服务的对应关系。 能…

sequence 题解

原题链接。 首先这个数据范围就很 meet in middle。 首先一个关键性质是对于任意的一个顶到界限的 \(a\) 都能保它顶到界限那一位后面的位数合法,因为它后面随便选就意味着一定能通过调整使得后面的位置异或完是零。 …

2025上海商铺办公室装修公司推荐指南:业态适配与TOP10实力榜

2025上海商铺办公室装修公司推荐指南:业态适配与TOP10实力榜一、商铺装修公司核心评估维度(基于商业空间需求定制) 据《上海市商业空间装饰服务标准(2025 版)》,优质商铺装修服务商需满足六大针对性指标,适配餐…

FastAPI Test Project

# FastAPI Test Project## 项目简介 这是一个使用 FastAPI 框架的测试项目。## 技术栈 - Python >= 3.13 - FastAPI >= 0.121.2 - Uvicorn >= 0.38.0 - uv (包管理工具)## 环境配置### 虚拟环境说明 本项目使…

React Scheduler(调度器)

非常好!React Scheduler(调度器)是React并发能力的引擎,是理解React高性能更新的关键。它独立于React本身,是一个用于在浏览器中调度任务的通用库。 让我们深入剖析React调度器的核心机制。一、调度器是什么?为什…

2025年11月学习机榜单:双线提分机型领衔,十大高性价比之选

2025年11月学习机榜单:双线提分机型领衔,十大高性价比之选孩子放学回家,居家自学缺方法、线下补漏效率低,新课标改革后知识梯度拉升,家长既难同步校内进度,又难精准帮孩子突破薄弱点 —— 这成了 2025 年秋季开学…

Hier-SLAM++ (2) MeshGPT:仅使用解码器Transformer生成三角形网格 - MKT

Hier-SLAM++ (2) MeshGPT:仅使用解码器Transformer生成三角形网格 MeshGPT: Generating Triangle Meshes with Decoder-Only Transformershttps://github.com/audi/MeshGPTMeshGPT通过对经过训练的Transformer模型进…

2025.11.10训练记录

noip模拟赛。 因为喝了咖啡没有睡觉。costa的瓶装拿铁真的特别难喝。 T1 图上加边删边,维护连通块大小的积。 一开始以为直接可撤销并查集就可以做。直接去看T2了,看了一会儿回来实现。 想了一下,感觉也许可以直接撤…

Day41(11)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

Mybatis 配置文件spring:application:name: springboot-mybatis-quickstart#数据库的连接信息datasource:type: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/web01driver-class-name: co…

vue2和vue3声明式和命令时的区别

这是一个非常好的问题,它触及了Vue2到Vue3最核心的演进逻辑。Vue3在保留声明式本质的基础上,通过更底层的命令式API,让开发者能够编写出更具声明性、更易维护的代码。 让我们来深入剖析Vue2和Vue3在声明式与命令式上…

WPS office 2023专业增强版 无限用v12.8 永久激活下载及安装使用教程

激活序列码:TJ3GN-9NTGQ-GLF7C-YEN8X-TJWML WPS Office是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。 具有内存占用低、运行速度快、体积小巧、强大插…

3D 文件类型,怎么在线查看编辑STL/AMF/OBJ/stp/fbx/ply转换

​ 大致上,数字文件有三种类型:用于打印的、用于建模的和用于二维绘图的。为了生产实体零件,3D打印机需要特定的文件类型。被称为“网格模型”,3D打印中最常见的文件类型称为STereoLithography,简称STL。可以免费…

022304105叶骋恺数据采集第三次作业

作业1 代码与运行结果 class ImageDownloader:def __init__(self):self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.…

AI故事生成平台 -

AI故事生成平台通过调用deepseek的apikey,完成了一个基于ai大模型来进行生成故事的平台 通过调用火山方舟豆包的api,使用其文生图对生成的故事进行配图故事页提供多条件查询

nginx rewrite 状态码区别

301 与 308 有了之前的对 302、303、307 的理解,对 301 和 308 的理解就简单多了。 301 Moved Permanently 的定义 301 状态码表明目标资源被永久的移动到了一个新的 URI,任何未来对这个资源的引用都应该使用新的 UR…

GS4:首个泛化高斯溅射语义SLAM框架,十倍效率三维建图 - MKT

GS4:首个泛化高斯溅射语义SLAM框架,十倍效率三维建图

2025 ICPC 南京区域赛 CFGIJ

C. Distributing Candies 思维。 奇数无论怎么分都会分出一个偶数,而奇数不能整除偶数;偶数的话对半分即可。点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {i64 n;std::cin >…

关于一种滚动数组的错误实现方式

滚动数组的大坑!!!!!!!错误写法:swap 一次是 \(O(N)\) 的!!!!!!! int dp[N],dp2[N]; int dodp() {memset(dp,-0x3f,sizeof(dp));memset(dp2,-0x3f,sizeof(dp2));dp2[0]=0;for(int kkk=0;kkk<s.size(…

wps office 2023专业增强版

WPS office 2023专业增强版 v12.8 永久激活下载及安装使用教程 WPS Office是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。 具有内存占用低、运行速度快、…