异或序列
题目链接:YBT2023寒假Day5 A
题目大意
给你一个自然数序列,你要求出异或和为 0 的最长子序列的长度。
思路
考虑这个最多其实不太好搞,转化一下,把所有数异或起来得到 s u m sum sum,就是要用最少的数异或出 s u m sum sum。
然后找到一个解的方法是线性基,但是用最少的数似乎不太可行。
考虑换一个思路,有关异或的,而且有点类似卷起来的,就是 FWT。
那你考虑把序列里所有出现的数的下标的值都是 1 1 1,然后 FWT 之后次方 x x x 在 IFWT 就可以判断选恰好 x x x 个数能不能。
但是你觉得这样有点不够快,考虑二分一下,那你只要强制 f 0 = 1 f_0=1 f0=1 就可以至少 x x x 个数了。
代码
#include<cstdio>
#include<cstring>
#define ll long long
#