传送门
n个含两位1的向量,每个向量为1的维度相互连边,在不构成环的情况下,有2^n种大概(2^(n+1)个维度),在这个根本上只要加一条含一位1且该维度已出现过1,则可使|T|最大到达2^(n+1); 因此连边后每个连通块最多可包罗一个只有一个1的向量并使答案翻倍, 所以可以把含一个1的向量看作连向m+1的边,然后用并查集找出所有边的条数即为答案
[code]#include using namespace std;typedef long long int LL;const int N = 5e5 + 7;const int MX = 1e9 + 7;int n, m;int rep[N];int Find(int a) { if (rep[a] == a) return a; return rep[a] = Find(rep[a]);}bool Union(int a, int b) { a = Find(a); b = Find(b); rep[a] = b; return a != b;}int main() { scanf("%d %d", &n, &m); for (int i = 1; i |