专栏文章
PKUWC2025 D2T3 题解
个人记录参与者 5已保存评论 4
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @miqdza24
- 此快照首次捕获于
- 2025/12/04 03:14 3 个月前
- 此快照最后确认于
- 2025/12/04 03:14 3 个月前
考虑操作逆序, 互换,乘以 变成整除 。
考察什么样的数可以由 做不超过 次操作得到,可以发现只有在形如 这样的区间里的数可以被取到,其中 是正整数。(这里不要求整除)
设这些区间的并为集合 ,可以发现集合 有这样的性质:对于任意 ,任意 也满足 。证明就是考虑取出任意一个包含 的区间 ,设 ,那么 。
考虑分析集合 的大小,对 进行分类讨论。
对于 ,我们有 。
对于 ,直接计算区间长度之和:
因此 的大小是 级别。
求出 集合内的所有数可以直接暴力枚举小的 ,然后拼上 内的所有数,因为区间关于 单调所以去重是简单的。
求出 集合后,考虑怎么做原问题。
因为这题做法是暴力,所以还是狄利克雷前缀和直接转移。
现在就有两个问题,一个是怎么求出所有刚好差了质数倍的转移对 ,另一个是分析总对数的级别。
考虑把 集合分成两部分,把 的称为大集合,反之称为小集合。
小集合内的转移数显然不超过 ,且容易求出,而大集合内每个数对应的 都不超过 ,因此它一定是 内某个数的因数。
因此我们只需对这个区间跑区间筛,然后只需要解决对于一个集合内的 ,定位 在集合里的位置。
可以发现只需要知道 所在区间的 ,并记录每个 对应的区间左端点位置即可,复杂度应该是 的。
听说转移数可以分析出是 ,但是我没学会。
这样的总复杂度就是 ,可以通过。
不过我赛时写的是对每个区间区间筛,还有一百万个 map 去重,这样居然也通过了。
相关推荐
评论
共 4 条评论,欢迎与作者交流。
正在加载评论...