随笔分类 - 题目来源-ACM/杭电多校/CFgym
摘要:Kruskal 算法。考虑哪些边有可能被贪心选中。因为最小公倍数的要求太复杂、太苛刻,我们不妨忽略“最小”,只考虑是公倍数。因为这样新产生的边边权更大,不会影响答案。考虑点权是 k 的倍数的点之间的边,发现有用的边其中一个端点一定是大于等于 L 的第一个 k 的倍数。于是有用的总边数就被压缩到了 O(n log n) 级别。直接执行 kruskal 算法即可。此外,我们还可以不事先排序,用 priority_queue 把空间复杂度优化到 O(n)。
阅读全文
摘要:拆方差。拆成三个部分,前两个部分是类似的。我们改变枚举方式,用桶存储出现次数,并做 NTT,就能求出。第三部分,基于前面 NTT 的结果,进行容斥。分类讨论一下,即可求出。
阅读全文
摘要:首先使用 minmax 容斥。然后通过推导,进一步转化为求子集里一个点都覆盖不到的区间数。暴力枚举子集是 2^n 的,太慢了。考虑对满足 xxx 条件的子集数量进行 DP 计数。复杂度 n^4。
阅读全文