bitset学习笔记
通过 洛谷 P3067 [USACO12OPEN]Balanced Cow Subsets G 这道题超强 bitset 卡常,知道了 bitset 的重要性,趁刚刚学习 bitset ,这里写一点用法。
感觉 bitset 像是一个更多元的 bool 数组,这边给出一些 bitset 的常用函数
w 为计算机位数
bitset<N> s;
s.size() 返回大小(位数)
s.count() 返回1的个数(复杂度为O(N/w))
s.any() 返回是否有1
s.none() 返回是否没有1
s.set() 全部变成1
s.set(p) 将p + 1位变成1(记住,是p+1为,因为bitset从0位开始)
s.set(p,x) 将p + 1为变成x
s.reset() 全部变成0
s.reset(p) 将p + 1位变成0
s.flip() 全部取反
s.flip(p) 将第p + 1为取反
s.to_ulong() 返回它转换为 unsigned long 的结果,超出范围则报错
s.to_ullong() 同上,返回 unsigned long long
s.to_string() 同上,返回 string
部分转载自: https://cmwqf.github.io/