1 条题解
-
0
自动搬运
来自洛谷,原作者为

Nesraychan
花束を君に搬运于
2025-08-24 23:15:50,当前版本为作者最后更新于2025-05-12 10:20:31,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
将 的所有整数划分成三个集合,要求任意两个属于不同集合的元素之和不在剩下的那个集合之内。集合之间是无序的。
求方案数,对 取模。
数据范围
。
。
。
。
。
$\operatorname{Subtask} 6(23\%):n\le 2\times 10^{10}$。
题解
算法
暴力枚举集合划分,并判断是否满足题意。
朴素实现复杂度为 ,可以通过子任务 ,期望得分 分。
算法
对暴力搜索进行剪枝,如果已经不满足题意就直接返回,不继续搜索。
此时代码速度没有质的改变,原因是若允许含空集,答案相当大,而这部分答案为 。
而对于三个集合都非空的情况,其实方案数是不多的。考虑先钦定三个集合里的某个数,再结合剪枝进行搜索。
可以做到较快的指数级复杂度,可以通过子任务 ,期望得分 分。
算法
由于指数级复杂度已无法满足我们的需求,于是尝试找出若三个集合非空,他们所拥有的性质。
不妨设三个集合按照最小元素的值升序排序后依次为 。设 为 中元素升序排序后的第 个元素。同理于 。设 。
引理
对于 ,若 且 ,有 (如果在值域内)。同理于 。
证明:
若 ,有 ,又 。
若 ,有 ,又 。
引理
对于 且 整除 与 ,若 且 ,假设对于 与 ,有 。那么 ,有 。同理于 。
证明:
考虑如下的一个构造过程。若 ,将其变为 ,反之变为 。由于 ,这是一定可以操作的。
这相当与在 意义下,合并 与 的两个等价类。由裴蜀定理可知,在 的意义下,同一等价类中的两个数在 中的存在性是一致的。
定理
对于 且 ,则 ,有 。同理于 。
证明:
使用数学归纳法。
对于 , 显然 。
对于 ,设 ,假设若 ,有 。
设 ,由引理 可知, 对于 ,有 。
由于 ,由引理 可知,对于 ,有 。
而 ,于是我们从 成立得到了 成立。
推论
对于任意 ,若 且 ,则对于 ,有 。同理于 。
证明:
若一个集合没有出现矛盾,则他的子集也不会出现矛盾。
取出所有 的数,要求这些数之间没有矛盾,于是这便是一个可以应用定理 的子问题。
定理
有 恒成立。
证明:
仍然考虑定理 证明中的归纳过程。
显然有 。尝试证明若对于 ,有 ,则 。
使用反证法,假设 且 。下述过程若无特殊说明,均默认值域 。
若对于 ,有 成立。则 ,有 。
由推论 知 ,同时若 ,则其属于 。
又 ,故 可以取遍所有满足 且 的 。于是 ,这与 的顺序矛盾。
另一方面,若 ,使得 ,则对 与 ,都有 。
又对 与 ,都有 (若 )。
这相当于在模 意义下,若 与 均 ,则他们都属于 。
因为 ,于是这可以取完模 意义下的除了 以外的所有等价类。
又由于 ,故出现矛盾。
定理
有 整除 。
证明:
若对 ,有 ,则由于 间的大小关系,有 。
另一方面,若存在 ,使得 ,则有 ,而 。
通过以上结论,我们可以知道,对于 ,唯一的限制是 与 需要和他在一个集合内。
对于剩余部分,限制是由他们内部带来的。由于 ,我们可以先将其除以 再考虑。发现这类似一个规模更小的子问题, 但限制会有所不同。如原先的 内要互素,可以为空集等。
现在,我们已经发现了足够多的这个结构所具有的性质,尝试设计 dp 来解决这个问题。
设 表示总方案数。考虑分类讨论计算贡献。
当 中所有数都为 的倍数时,有 ,且对 ,都有 。‘
考虑保留所有 的倍数,并将他们除以 ,得到 。
此时 内的 应为 。 可为空集,或者满足顺序 。
设 表示这种情况下的方案数,这一部分对 的贡献为 。
考虑 的转移式,使用莫比乌斯反演消去 的限制。
对于 为空集的情况,唯一的要求是 。贡献为 $-2^{n-1}+\sum_{d=1}^{n}\mu(d)\times (2^{\lfloor\frac{n}{d}\rfloor}-1)$。
对于 非空的情况,根据定理 ,此时非 的倍数的数一定在 中,于是可以将所有数先除以 再判断合法性。需要考虑 中不含 倍数的情况。
这一部分的贡献为 $-2f(n)-(2^{n-1}-1)+\sum_{d=1}^{n}\mu(d)\times [3f(\lfloor\frac{n}{d}\rfloor)+(2^{\lfloor\frac{n}{d}\rfloor-1}-1)]$。
这两种情况求和号外面的部分均为 时的 corner case。
综上,有 $h(n)=-2f(n)-(2^n-1)+\sum_{d=1}^{n}\mu(d)\times [3f(\lfloor\frac{n}{d}\rfloor)+3\times 2^{\lfloor\frac{n}{d}\rfloor-1}-2]$。
当 中存在不为 倍数的数时,此时 均可为空集。
设 为这部分的方案数,对 的贡献为 $\sum_{d=2}^{n}(2^{\lfloor\frac{d}{2}\rfloor-1}-1)g(\lfloor\frac{n}{d}\rfloor)$。
转移推导和 是类似的。对于 均为空的情况,方案数为 。
对于 中存在一个空集的情况,方案数为 $-2+2\sum_{d=1}^{n}\mu(d)\times (2^{\lfloor\frac{n}{d}\rfloor}-1)$。
对于 均非空的情况,方案数为 $-2f(n)-(2^n-2)+2\sum_{d=1}^{n}\mu(d)\times [3f(\lfloor\frac{n}{d}\rfloor)+(2^{\lfloor\frac{n}{d}\rfloor-1}-1)]$。
综上,有 $g(n)=-2f(n)-(2^n-1)+2\sum_{d=1}^{n}\mu(d)\times [3f(\lfloor\frac{n}{d}\rfloor)+3\times 2^{\lfloor\frac{n}{d}\rfloor-1}-2]$。
暴力转移,时间复杂度 。可以通过子任务 ,期望得分 分。
算法
注意到对于 ,我们有经典转移式 。
于是我们事实上可以使用整除分块优化转移,所有转移对的数量是 的。
需要对所有状态预处理 的次幂等需要的系数,不然复杂度可能会多一个 。
时间复杂度 ,可以通过子任务 ,期望得分 分。
算法
使用杜教筛的思想,预处理前若干项 dp 值。那么现在的问题是如何快速求出 的 dp 值。
发现我们可以对差分进行 dp,这样除法下取整就变为了整除,可以 的求出。
总时间复杂度 ,可以通过子任务 ,期望得分 分。
如果只使用了快速求前 项的算法而没有使用整除分块加速的话,可以通过子任务 。
参考资料
题目背景经作者授权,节选并改编自 www.bilibili.com/read/cv5014463。
致谢
感谢中国计算机学会提供本次交流的平台。
感谢吴俊书学长提供本题的 idea。
感谢厦门双十中学李静榕同学为本题验题。
- 1
信息
- ID
- 12265
- 时间
- 7500ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者