专栏文章

题解:CF2056F1 Xor of Median (Easy Version)

CF2056F1题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@miqh5crs
此快照首次捕获于
2025/12/04 04:43
3 个月前
此快照最后确认于
2025/12/04 04:43
3 个月前
查看原文
很厉害的题,评个紫不过分吧。虽然是我自己推出来的,但是花了一个小时,场上基本不可能过。
首先我们注意到题目要求的是中位数的异或和,感性理解一下可以发现很多方案中的中位数相互抵消了。假设我们有一种方案选取了 kk 种数字,从小到大分别选取了 a1,a2,,aka_1,a_2,\dots,a_k 个,那么对应序列的方案应为:
n!i=1kai!\frac {n!} {\prod_{i=1}^k a_i!}
这是可重集排列的方案数,因为我们是异或,所以上述式子只有为奇数时才有贡献。定义函数 f(n)f(n) 表示 n!n!22 的次幂,也就是 2f(n)n!2^{f(n)}||n!,上述式子在 mod2\bmod 2 意义下等价 f(n)=i=1kf(ai)f(n)=\sum_{i=1}^k f(a_i),形式化表述:
n!i=1kai![f(n)=i=1kf(ai)](mod2)\frac {n!} {\prod_{i=1}^k a_i!} \equiv [f(n)=\sum_{i=1}^k f(a_i)] \pmod 2
所以其实对于 nn,我们只用统计 f(n)=i=1kf(ai)f(n)=\sum_{i=1}^k f(a_i) 所有方案的中位数异或和。
那么什么样的 aa 序列满足上述条件呢?打个表发现,aa 序列是 nn 二进制位的一个拆分。形式化的说,我们应该统计满足如下性质的 aa 序列:
对于任意的 i,ji,j,都满足 aiandaj=0a_i \operatorname{and} a_j=0
并且 j=1kaj=n\sum_{j=1}^k a_j=n
这个证明不难,结论也很直观。
我们惊奇的发现,设 nn 的最高位是 2K2^K,因为 2K>n22^K>\frac n 2,所以在这个序列中中位数就是最大值。
那么这个就简单了,我们枚举 kk,设 nn 的二进制位中有 cntcnt11,那么方案数就是 {cntk}cnt \brace k,也就是将 cntcnt11 分配到 kk 个集合中,且集合不为空的方案数。
同时,我们再枚举最大值 xx,选取数字的方案显然就是 {cntk}(xk1){{cnt} \brace {k}} {x \choose k-1},当这个值是奇数的时候,我们就可以异或上 xx,总复杂度是 O(nk)O(nk)

评论

1 条评论,欢迎与作者交流。

正在加载评论...