Uoj#310. 【UNR #2】黎明前的巧克力

题意:给出一个可重集 (相等的两个元素视为不同元素),要求选出两个子集 ,满足 的异或和相等,且不选择相同元素。求方案数。

答案对 取模,,时限


套路题。

异或和相同等价于异或和为

那么我们可以先找到一个子集 使得其异或和为 ,然后任意划分成 ,这构成一一对应。

每个元素都有两种可能的归宿,划分的方案数是

计算 其中多项式是集合幂级数,乘法是异或卷积。系数 是因为每个元素可以分到两个集合。

它的 项就是答案。


直接暴力卷积显然不优。注意到每个幂级数只有两个非 项,考虑如何快速得到最终的 变换结果。

设第 个幂级数为 ,我们要求的是 然后对 施加 ,取出 就是答案。

考虑 的可能取值。

在施加 变换时, 对每个位置的贡献都是 ,但是 的贡献可能是 也可能是 的可能取值是 总可以表示成 的形式。

,即 出现的次数。

施加 变换,我们能够得到每个位置上 的和(而非乘积)。

设位置 个,而 个,能得到 解这个方程就能得到 ,然后快速幂(或光速幂)计算

注意最后要减去空集的贡献。

复杂度