奇计淫巧______bitset优化

bitset


可以当作一个bool型数组考虑,bitset<N> bs;  可以考虑成一个数组bool bs[N]。


相关操作:


bs.set(); 全部置1,bs.reset()全部置0;


bs.set(pos);等价于bs[pos]=1,bs.reset(pos)等价于bs[pos]=0;


最重点的来了,bitset<N> a, b;


!a //按位取反
a^b //按位异或
a|b //按位或
a&b //按位与
a=b<<3 //整体移位
a.count(); //a中1的个数

bitset优化有什么用呢


如果有一个bool数组 a[N] 和b[N] 把每一个位异或的话,一定是

for (int i = 0; i < N; ++i) c[i] = a[i] ^ b[i];


但是如果用bitset直接a^b的话,只需要O(N/机器字节数)


这样可以实现常数优化。


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值