KEYENCE2021 D 题解
blog。没题解就来写一篇捏。
记 \(i,j\) 出现在同一队的次数为 \(s\),总操作数为 \(t\)(\(s\le t\))。考虑求出总操作数下界。
- 每操作一次,出现在同一队的数对个数增加 \(\dfrac{2^n\cdot(2^{n-1}-1)}2=2^{n-1}(2^{n-1}-1)\)。
- 操作 \(t\) 次,数对个数为 \(t\cdot2^{n-1}(2^{n-1}-1)\) 对。
- 另一方面,共有 \(\binom{2^n}2\) 对,总次数即为 \(s\cdot\binom{2^n}2=s\cdot2^{n-1}(2^n-1)\)。
于是 \(t\cdot2^{n-1}(2^{n-1}-1)=s\cdot2^{n-1}(2^n-1)\),\(\dfrac st=\dfrac{2^{n-1}-1}{2^n-1}\),由于分子分母互质,\(2^n-1\mid t\),即有 \(t\ge 2^n-1\)。
不难构造一个取到 \(s=2^{n-1}-1, t=2^n-1\) 的方案:对于第 \(i\) 轮第 \(j\) 人(此处 \(1\le i<2^n\),\(0\le j<2^n\)),按 \(\operatorname{popcount}(i \operatorname{ and } j)\) 奇偶性分类即可。
证明不难:对于两个人 \(x\ne y\),找到二进制下的一个不同位。第 \(i\) 轮的对应位取 \(0\) 时贡献相同,对应位取 \(1\) 时贡献相反,那么当 \(0\le i<2^n\) 时就会有恰好一半的轮次,两人出现在同一队。排除掉 \(i=0\),那么即有 \(s=2^{n-1}-1\)。
code,时间复杂度 \(O(2^{2n})\)。