题意:给出一个可重集 (相等的两个元素视为不同元素),要求选出两个子集
,满足
的异或和相等,且不选择相同元素。求方案数。
答案对 取模,,,时限 。
套路题。
异或和相同等价于异或和为 。
那么我们可以先找到一个子集
使得其异或和为 ,然后任意划分成
,这构成一一对应。
每个元素都有两种可能的归宿,划分的方案数是 。
计算 其中多项式是集合幂级数,乘法是异或卷积。系数 是因为每个元素可以分到两个集合。
它的 项就是答案。
直接暴力卷积显然不优。注意到每个幂级数只有两个非 项,考虑如何快速得到最终的 变换结果。
设第 个幂级数为 ,我们要求的是 然后对 施加 ,取出 就是答案。
考虑
的可能取值。
在施加 变换时, 对每个位置的贡献都是 ,但是 的贡献可能是 也可能是 。 的可能取值是 或 。 总可以表示成 的形式。
记 ,即
中 出现的次数。
对 施加 变换,我们能够得到每个位置上
的和(而非乘积)。
设位置 上 有 个,而 有 个,能得到 解这个方程就能得到 ,然后快速幂(或光速幂)计算 。
注意最后要减去空集的贡献。
复杂度 。