CSP-S 2025 题解

CSP-S 2025 题解

下午试图 vp 昨天的那场 CF div1+2,从 A 开始狂吃罚时,一直吃到 D 终于破防口胡了一下 E 就一直水到现在

感觉今天莫名的没效率而且似乎有人想看所以简单写一下 CSP 题解

社团招新

题目非常自然,考虑没有任何限制的时候怎么做,显然可以直接贪心,把每个点和最大的匹配

然后发现不满足限制的一定要调整,因为显然不可能存在两个社团同时不满足限制,所以直接把最大的按照答案的变化量贪心调整即可,复杂度 \(O(n\log n)\)

事实上这个东西是一个二分图最大权匹配,不难发现其实完全可以模拟这个匹配过程

道路修复

考考你是否相信现代评测机的速度

首先一个显然的做法是枚举每个集合确定哪些村庄被选然后跑最小生成树,复杂度爆炸了,注意到问题是边数太多了,考虑优化

显然只有把所有村庄全扔掉之后在最小生成树上的边有用,这一点不明白的同学可以模拟一下克鲁斯卡尔

那么现在使用归并排序复杂度其实是 \(O(nk2^k)\)(不带 \(\alpha\) 的原因是并查集只有合并操作会增加势能,但是显然只会合并 \(O(2^kn)\) 次,这东西远远小于 \(k\),不在复杂度上限上)

现在想过算出来还是比较困难,注意到可以递归实现,每次在栈空间里保留之前选择的最小生成树,直接去掉 \(k\),觉得这题卡常的可以试试,轻松过

谐音替换

没有任何意义的垃圾题,noip 再出这种屎我再喷一遍

首先存在一个 AC 自动机做法,注意到我们把 \(\{s_{i,0},s_{i,1}\}\)\(\{t_{i,0},t_{i,1}\}\) 看成一个字符,生成的字符串的每个字符都是一个这样的二元组,记作 \(s,t\),之后能够替换的要求就是 \(s\)\(t\) 的子串且 \(s\) 匹配的位置包含了所有 \(t_{i,0} \neq t_{i,1}\) 的位置

第一个要求很好满足,第二个要求事实上就是对走到的每个点都有一个深度限制,匹配串长度必须大于某个值,那么先算没贡献的再算小于等于某个值的差分一下就直接做完了,复杂度 \(O(n|\sum|)\) 看上去这里 \(|\sum|=26^2\),让它合理的做法可以看 这个

一个更好的做法是直接扔掉子串匹配问题,定义一个字符串组的关键串 \(k\) 是它第一个不同的位置到最后一个不同的位置构成的串,现在能贡献的 \(s\) 需要满足关键串一样并且关键串前面的部分是 \(t\) 关键串前面部分的后缀,关键串后面的部分是 \(t\) 关键串后面部分的前缀,这个可以在两头分别建 trie 树,问题转化成了找两棵树两个点根链上颜色数的交集大小,且每个颜色都只会在两棵树上分别出现一次,注意到这其实是个二维偏序,使用你喜欢的方法解决即可做到 \(O(n\log L+L)\) 通过此题

但是还能优化,因为事实上你的 trie 存在性质,它是由若干字符串插入形成的,所以每个点的根链长度和是 \(O(L)\) 级别的,于是只需要在一棵树上 dfs 的时候修改,在另一棵树上 dfs 的时候暴力跳根链查询即可做到 \(O(L)\)

记得判 \(|t_1| \neq |t_2|\)

员工招聘

首先考虑 \(2^n\) 怎么做,枚举哪些位置是 \(0\)(就是没被录取),设 \(x\) 代表当前位置之前钦定的 \(0\) 的个数,那么每个位置能填的数的限制分为三种

  1. 这一位是 \(0\) ,且 \(s_i=0\) 显然可以随便填
  2. 这一位是 \(0\) ,且 \(s_i=1\) 此时填的数 \(i\) 必须保证 \(c_i \le x\)
  3. 这一位是 \(1\) ,且 \(s_i=1\) 此时填的数 \(i\) 必须保证 \(c_i > x\)

通过两种不同的计算方式可以导出两个不同的做法

注意到 \(x\) 单调递增,我们事实上维护的是一个分界点,熟悉的可以直接想到贡献延后计算,设 \(dp_{i,j}\) 表示当前到第 \(i\) 个数,分界点左边有 \(j\) 个数还没填,容易发现我们每次决策点移动的时候新加入左边的数能填的位置是所有 \(<i\) 的空位置和之后的所有这一位是 \(0\) 的位置,所以直接转移即可,注意到转移其实只和当前前面有多少个 \(0\) 有关,所以不需要 \(2^n\) 枚举了,直接记录一维表示前面 \(0\) 的个数,每次转移枚举当前位是 \(0\) 还是 \(1\) 即可 \(O(n^3)\)

因为我们现在是钦定了 \(0\),不好计算方案,我们试图容斥一下,计算这个 \(0\) 的集合没被录取,而 \(1\) 的位置无限制的方案,这显然可以直接 \(3^n\) 容斥做,我们依然按照之前方式给它搬到 dp 上就可以直接 \(n^3\)

posted @ 2025-11-07 22:05  wang54321  阅读(16)  评论(0)    收藏  举报