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

Mivik
AFO搬运于
2025-08-24 22:36:25,当前版本为作者最后更新于2022-02-03 11:21:58,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Subtask 1
给暴力分是中华民族的优秀传统美德。
Subtask 2
我们注意到这个子任务给了很多分,暗示着出题人认为会了求单点就差不多会做了(嗯嗯)。
保留题目中 1 开始的下标机制,我们发现洗一次牌本质上就是进行一次
的置换(记为 )。而题目中的 实际上就是在对 这些置换的不动点个数求和。
不妨先来研究一下这个置换的环。首先有个显然的观察:环长最大是 。因为对于任何整数 (),我们有
$$\begin{aligned} &2^{2n}t\\ =&\left(2^{2n}-1\right)t+t\\ =&\left(2^n-1\right)\left(2^n+1\right)t+t\\ =&t\pmod{2^n+1} \end{aligned} $$我们想要求出长度为 的环有多少个,可直接切入似乎会没有什么思路。我们考虑计算所在环长度为 的约数的数的个数 ,然后就可以莫比乌斯反演得到所在环长度为 的数的个数 。
我们发现,对于一个数 ,它在一个长度为 的约数的环内,当且仅当
$$\begin{aligned} 2^kt&\equiv t\pmod{2^n+1}\\ \left(2^k-1\right)t&\equiv 0\pmod{2^n+1} \end{aligned} $$即
$$\begin{aligned} (2^n+1)&\mid \left((2^k-1)t\right)\\ \frac{2^n+1}{\left(2^n+1,2^k-1\right)}&\mid t \end{aligned} $$?这不难让我们想起一个定理:
定理一:对于 ,有
关于这个定理的一个(甚至更通用的证明)可以看 这里。
可是上面的是 ,看起来似乎没什么联系啊?
我们不妨改写为
$$\left(2^n+1,2^k-1\right)=\left(\frac{2^{2n}-1}{2^n-1},2^k-1\right) $$然后我们知道
定理二:对于 ,有
这个挺显然的。由于 ,于是就有
$$\begin{aligned} &\left(2^n+1,2^k-1\right)\\ =&\left(\frac{2^{2n}-1}{2^n-1},2^k-1\right)\\ =&\frac{\left(2^{2n}-1,2^k-1\right)}{\left(2^n-1,2^k-1\right)}\\ =&\frac{2^{(2n,k)}-1}{2^{(n,k)}-1} \end{aligned} $$我们分两种情况讨论:
为奇数
也就是说 ,那么
$$\begin{aligned} \left(2^{2n}-1,2^k-1\right)=\left(2^n-1,2^k-1\right)&=2^{(n,k)}-1\\ \left(2^n+1,2^k-1\right)&=1 \end{aligned} $$条件转化为
由于 ,显然有 。
为偶数
那么 ,则有
$$\begin{aligned} \left(2^{2n}-1,2^k-1\right)&=2^{2(n,k)}-1\\ \left(2^n-1,2^k-1\right)&=2^{(n,k)}-1\\ \left(2^n+1,2^k-1\right)&=2^{(n,k)}+1 \end{aligned} $$条件转化为
由于 ,则 。
总结一下
$$B_k= \begin{cases} 2^{(n,k)},&2\mid\frac k{(n,k)}\\ 0,&\text{otherwise.} \end{cases} $$记 ( 为奇数),那么
套用反演可得
我们考虑到原题要求的 的不动点个数之和似乎并不是非常的 canonical:最长的环有 长怎么只求前 个?我们不妨先求出 的不动点个数之和,记之为 。
首先我们观察到环长必须得是 的约数。由于一个长度为 的环对 的贡献为 ,对 的贡献为
$$\left\lfloor\frac nw\right\rfloor=\frac12\left(1+\frac{2n}w\right) $$于是就有 。我们只需要求出 即可。
整理式子之前现有一个小定理:
$$\sum_{k=1}^n\mu(k)\left\lfloor\frac nk\right\rfloor=1 $$定理三:
证明:
$$\begin{aligned} &\sum_{k=1}^n\mu(k)\left\lfloor\frac nk\right\rfloor\\ =&\sum_{k=1}^n\mu(k)\sum_{k|d,d\le n}1\\ =&\sum_{d=1}^n\sum_{k|d}\mu(k)\\ =&\sum_{d=1}^n\left[d=1\right]\\ =&1 \end{aligned} $$于是开始整理式子:
$$\begin{aligned} g(n)&=\sum_{k=1}^{2n}\left\lfloor\frac{2n}k\right\rfloor\sum_{d|k}\mu(d)B_{k/d}\\ &=\sum_{k=1}^p\left\lfloor\frac pk\right\rfloor\sum_{d|2Qk}\mu(d)B_{2Qk/d}\\ &=\sum_{k=1}^p\left\lfloor\frac pk\right\rfloor\sum_{d|k}\mu\left(\frac kd\right)2^{Q(d,p)}\\ &=\sum_{g|p}2^{Qg}\sum_{k=1}^{\frac pg}\left\lfloor\frac p{kg}\right\rfloor\sum_{d|k}\mu\left(\frac kd\right)\sum_{t|d,t|\frac pg}\mu(t)\\ &=\sum_{g|p}2^{Qg}\sum_{t|\frac pg}\mu(t)\sum_{d=1}^{\frac p{gt}}\sum_{k=1}^{\left\lfloor\frac p{gtd}\right\rfloor}\left\lfloor\frac p{kgtd}\right\rfloor\mu(k)\\ &=\sum_{g|p}2^{Qg}\sum_{t|\frac pg}\mu(t)\sum_{d=1}^{\frac p{gt}}1\\ &=\sum_{g|p}2^{Qg}\sum_{t|\frac pg}\mu(t)\frac p{gt}\\ &=\sum_{g|p}2^{Qg}\phi\left(\frac pg\right)\\ &=\sum_{g|p}2^{n/g}\phi(g)\\ &=\sum_{g|n,g\text{ is odd}}2^{n/g}\phi(g) \end{aligned} $$嗯,于是我们拿到了 45 分。
Subtask 3
我们考虑求 的前缀和 ,再随便操作下就能求到 的前缀和 了。
$$\begin{aligned} G(N)&=\sum_{n=1}^N\sum_{g|n,g\text{ is odd}}2^{n/g}\phi(g)\\ &=\sum_{d=1}2^d\sum_{g=1}^{\left\lfloor\frac Nd\right\rfloor}\left[g\text{ is odd}\right]\phi(g) \end{aligned} $$我们记
$$S(n)=\sum_{k=1}^n\left[k\text{ is odd}\right]\phi(k) $$那么 $G(N)=\sum_{d=1}2^dS\left(\left\lfloor\frac Nd\right\rfloor\right)$。预处理好 之内的 ,我们就可以愉快地计算啦~
Subtask 4
我们来观察这个 。首先我们注意到
$$\phi(2n)= \begin{cases} \phi(n),&n\text{ is odd}\\ 2\phi(n),&\text{otherwise.} \end{cases} $$那么我们设 ,则有
$$\begin{aligned} S(n)&=\sum_{k=1}^n\left[k\text{ is odd}\right]\phi(k)\\ &=H(n)-\sum_{k=1}^n\left[k\text{ is even}\right]\phi(k)\\ &=H(n)-\sum_{k=1}^{\left\lfloor\frac n2\right\rfloor}\left[k\text{ is even}\right]\phi(2k)-\sum_{k=1}^{\left\lfloor\frac n2\right\rfloor}\left[k\text{ is odd}\right]\phi(2k)\\ &=H(n)-2\sum_{k=1}^{\left\lfloor\frac n2\right\rfloor}\left[k\text{ is even}\right]\phi(k)-\sum_{k=1}^{\left\lfloor\frac n2\right\rfloor}\left[k\text{ is odd}\right]\phi(k)\\ &=H(n)-2\left(H\left(\left\lfloor\frac n2\right\rfloor\right)-S\left(\left\lfloor\frac n2\right\rfloor\right)\right)-S\left(\left\lfloor\frac n2\right\rfloor\right)\\ &=H(n)-2H\left(\left\lfloor\frac n2\right\rfloor\right)+S\left(\left\lfloor\frac n2\right\rfloor\right)\\ &=H(n)-2H\left(\left\lfloor\frac n2\right\rfloor\right)+H\left(\left\lfloor\frac n2\right\rfloor\right)-2H\left(\left\lfloor\frac n4\right\rfloor\right)+\cdots\\ &=H(n)-H\left(\left\lfloor\frac n2\right\rfloor\right)-H\left(\left\lfloor\frac n4\right\rfloor\right)-H\left(\left\lfloor\frac n8\right\rfloor\right)-\cdots \end{aligned} $$那么用杜教筛计算 即可。这样的话,计算单个 会需要计算 次 ,加之我们需要算 个不同位置的 ,看似时间复杂度爆表,实则不然。
记 $D(n)=\left\{n,\left\lfloor\frac n2\right\rfloor,\left\lfloor\frac n3\right\rfloor,\left\lfloor\frac n4\right\rfloor,\cdots\right\}$(不要给我以初中老师的口吻说集合不可重… 自动去重,啊,自动去重),那么我们知道杜教筛在计算 时实际上是对 中的所有数都计算了一遍 并存入了缓存。我们注意到,由于我们求的 $G(N)=\sum_{d=1}2^dS\left(\left\lfloor\frac Nd\right\rfloor\right)$,也就是说我们要求的 是满足 的,而根据:
定理四:$\left\lfloor\frac{\left\lfloor\frac np\right\rfloor}q\right\rfloor=\left\lfloor\frac n{pq}\right\rfloor$
我们知道我们在求 时,需要求的 $H(x),H\left(\left\lfloor\frac x2\right\rfloor\right),H\left(\left\lfloor\frac x3\right\rfloor\right),\dots$ 这些东西实际上也是在 中,也就是被计算并缓存过的。因此总的时间复杂度依旧等同于做一次杜教筛的复杂度(当然是计算 的部分,其它地方不一定,但不会影响总复杂度),也就是 (如果预处理前 个 的话)。
- 1
信息
- ID
- 7337
- 时间
- 1500ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者