专栏文章
题解:CF2056F1 Xor of Median (Easy Version)
CF2056F1题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqh5crs
- 此快照首次捕获于
- 2025/12/04 04:43 3 个月前
- 此快照最后确认于
- 2025/12/04 04:43 3 个月前
很厉害的题,评个紫不过分吧。虽然是我自己推出来的,但是花了一个小时,场上基本不可能过。
首先我们注意到题目要求的是中位数的异或和,感性理解一下可以发现很多方案中的中位数相互抵消了。假设我们有一种方案选取了 种数字,从小到大分别选取了 个,那么对应序列的方案应为:
这是可重集排列的方案数,因为我们是异或,所以上述式子只有为奇数时才有贡献。定义函数 表示 中 的次幂,也就是 ,上述式子在 意义下等价 ,形式化表述:
所以其实对于 ,我们只用统计 所有方案的中位数异或和。
那么什么样的 序列满足上述条件呢?打个表发现, 序列是 二进制位的一个拆分。形式化的说,我们应该统计满足如下性质的 序列:
对于任意的 ,都满足
并且
这个证明不难,结论也很直观。
我们惊奇的发现,设 的最高位是 ,因为 ,所以在这个序列中中位数就是最大值。
那么这个就简单了,我们枚举 ,设 的二进制位中有 个 ,那么方案数就是 ,也就是将 个 分配到 个集合中,且集合不为空的方案数。
同时,我们再枚举最大值 ,选取数字的方案显然就是 ,当这个值是奇数的时候,我们就可以异或上 ,总复杂度是 。
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...