bitset<MAXN> b; 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处的二进制位取反。 b.to_ullong() // 返回一个有相同二进制位的 unsigned long long 类型的值。
通常先考虑题目的暴力作法,若是复杂度有 \(1e9\) ,这时候就可能考虑 \(bitset\) 优化,通常题目中的关系相似于能不能?是否是?这种,或者能够用 \(bitset\) 优化 \(DP\)(背包 \(DP\) 比较多,或者用于记录路径之类) ,一个有趣的应用是对于一些字符串问题,字符串长度不长,可是动态更新,询问次数不少的状况,能够维护 \(bitset\) 进行快速求解。php