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