#2070 不等
考虑一个比较好的构造是 \(w_i=\text{popcount}(i)\bmod 2\)。此时任意相邻数均不相同。但很可惜 \(0\) 和 \(1\) 数量一样。
我们考虑在这个基础上再找一个函数 \(h_i\),满足 \(0\) 和 \(1\) 的数量不同,并取其异或 \(w\oplus h\),则此时目标变为最大化 \(h_i\) 中相邻数间相同的对数。
考虑题目中给出了 \(\sqrt n\),我们可以考虑分块。
我们将 \(n\) 个二进制位分为 \(\sqrt n\) 块,若 \(x\) 包含其中其中至少一块,则 \(h_i=1\)。
- 对于 \(h_i=1\),当且仅当其恰好包含一块时有 \(\sqrt n\) 个位置使其变为 \(0\)。
- 对于 \(h_i=0\),至多有 \(\sqrt n\) 个位置使其变为 \(1\)。
因此其为一合法构造。
另外一个比较神奇的构造是 \(w_i=\text{popcount}(i+1)\bmod 2\),这个构造可以做到 \(\lfloor \dfrac {n+2}2\rfloor\)。
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/22000649

浙公网安备 33010602011771号