状压DP学习笔记
二进制操作
- 将第k位设为1
x = x | (1 << k) - 将第k位设为0
x = x & -(1 << k) - 查询第k位
x & (1 << k)(x >> k) & 1
如果等于0,那么第k位是0,否则是1 - 查询是否有相邻两位均为1
x & (1 << k)(x >> k) & 1
例题1 P1896 [SCOI2005]互不侵犯
思路:板子用了一点二进制操作
例题2 P2704 [NOI2001] 炮兵阵地
思路:
二进制操作
x = x | (1 << k)x = x & -(1 << k)x & (1 << k)(x >> k) & 1x & (1 << k)(x >> k) & 1思路:板子用了一点二进制操作
思路: