位运算与集合

位运算与集合

枚举子集

for(int i=x;i;i=(i-1)&x) {  
    //
}

统计子集的答案

SPOJ TLE
CF 383E

rep(i,0,n) {
	rep(j,0,(1<<n)) if(j>>i&1) {
		upd(s[j], s[j^(1<<i)]);
	}
}

统计超集的答案

CF 449D

rep(i,0,n) {
	for(int j=(1<<n)-1;~j;--j) if(!(j>>i&1)) {
        upd(s[j], s[j|(1<<i)]);
    }
}

线性基

FWT

TBD

原文地址:https://www.cnblogs.com/wuyuanyuan/p/8596796.html