关于bitset
https://www.zybuluo.com/ysner/note/1327705
原理
\(bitset\)的原理是将一大堆值为\(0/1\)的数压成一个数。
操作
- 通过\(i>>x\)等操作,我们可以快速访问\(i\)数组右移\(x\)位后的状态(即只剩右数\(n-x\)个值)。
- \(bitset\)数组可以当作一个数来看待并进行>>,<<,&,^等操作(详见高斯消元总结)。
函数
-
\(b.any()\):\(b\)中是否存在置为\(1\)的二进制位
-
\(b.none()\):\(b\)中不存在置为\(1\)的二进制位吗
-
\(b.count()\):\(b\)中置为\(1\)的二进制位的个数
-
\(b.size()\):\(b\)中二进制位的个数
-
\(b[pos]\):访问\(b\)中在\(pos\)处的二进制位
-
\(b.test(pos)\):\(b\)中在\(pos\)处的二进制位是否为1
-
\(b.set()\):把\(b\)中所有二进制位都置为\(1\)
-
\(b.set(pos)\):把\(b\)中在\(pos\)处的二进制位置为\(1\)
-
\(b.reset()\):把\(b\)中所有二进制位都置为\(0\)
-
\(b.reset(pos)\):把\(b\)中在\(pos\)处的二进制位置为\(0\)
-
\(b.flip()\):把\(b\)中所有二进制位逐位取反
-
\(b.flip(pos)\):把\(b\)中在\(pos\)处的二进制位取反