专栏文章
CF2056F2 题解
CF2056F2题解参与者 3已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @miqd4fhd
- 此快照首次捕获于
- 2025/12/04 02:50 3 个月前
- 此快照最后确认于
- 2025/12/04 02:50 3 个月前
困难 *3000。
用 代替题面中的 ,因为不想打
\text{}。考虑如何通过 F1。
注意到题目要求的是异或,而在 数组确定时中位数 也是确定的。因此我们要考虑的,就是对于一个指定的 数组,有多少个合法的原数组,并且只需要考虑这个值的奇偶性。而这个值显然就是多重集全排列,即
由卢卡斯定理的经典结论,设 中为 的二进制位的集合是 ,则这个式子为 当且仅当 不重不漏的划分了 。即, 中每一位都恰属于一个 。
考虑最大的 ,设为 。则一定有 ,因为 包含了 的最高位。那么中位数其实就是 。
由于 F1 中 较小,可以枚举一些东西。尝试枚举非零元的数量 ,那么划分 的方案数直接可以用斯特林数计算。然后就是把划分出来的数按大小关系填进 里面去,显然只需选位置就行,又因为最大值在 处,因此这部分方案数就是 。
到这里可以得到最终答案表达式:
直接实现上式就是 的,可以通过 F1。
继续做的话首先需要前置知识:
为奇数等价与 。
为奇数等价于 。
(前者是卢卡斯定理,后者可以考虑递推公式中 的奇偶性证明。)
考虑继续优化。发现如果对某个特定的 ,能快速找出对应的 的贡献总和就很好。利用上述结论可知,设 ,则 F1 中的式子可以进一步化简为
这里的 包含符号 是二进制意义下的。
看上去还是要枚举 ,但实际上由于 很小,设 ,后面那个求和式子的值只跟 的后 位有关。枚举这些位,发现我们要算一个 的形式,这是容易的,分类讨论一下就行。
子集的 之和显然可以高维前缀和。
至此我们以 的复杂度解决了 F2。F2 submission。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...