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})\)

posted @ 2024-08-01 21:51  liangbowen  阅读(15)  评论(0)    收藏  举报