目录

位运算模版

遍历子集

1
2
3
4
y = st                 # 生成 st 的所有子集
while y:
    # 处理子集 y
    y = (y-1)&st

Gosper’s Hack

1
2
3
4
5
6
7
8
st,ma = (1<<k)-1, 1<<n                   # 生成 n 元集合所有 k 元子集
while st<ma:
    # 处理子集 st
	lb = st&-st
	r = st+lb
	st = (r^st)>>(lb.bit_length()+1)|r
	if st==0:
		break