zoukankan      html  css  js  c++  java
  • 给学弟的bitset使用整理

    Bitset就是一个01串,空间为bool的八分之一

    每一位占有一个bit,支持数组式单点修改,左右位移,位运算等操作

    时间复杂度   单次操作时间复杂度为O(n/w),w为计算机字长(一般为32或64)

    声明             bitset<maxn> now;

    支持初始化   bitset<maxn> now(string("00110101"));

    内部下标零开始,从右向左记录,初始化后将字符串记录到最右侧,左侧不足的补零

    单点修改       s[pos] = x;

    左移              s << x;

    支持              <<=和>>=

    支持与、或、异或运算  & | ^

    成员函数

    .reset()           集合内元素全部清零

    .set()              集合内元素全部置1

    .set(pos)        从右往左pos位置改为1    单点操作O1

    .set(pos,v)      从右往左pos位置改为v//只能是1/0

    .test(pos)       返回pos位置的值             单次操作O1

    .any()      返回一个布尔量 若内部存在一位值为1,返回true

    复杂度同上

    .none()   返回一个布尔量 若内部存在一位值为0,返回true

     

    .count()  返回一个bitset1的个数  O(n/w)

    .flip()       所有元素按位取反

     

    .flip(x)     对第x位取反

     

    例题 

    没有传送门。。。自己搜一下

    莫队 + bitset 

    洛谷 人渣的本愿 

     

    01背包 bitset优化

    bitset<maxn>b;

           cin>>n;b[0]=1;

           for(int i=1;i<=n;++i){

                  cin>>a[i];

                  b|=(b<<a[i]);

           }

           此时 b[ x ] 可以检验 x 大小 的 容量的背包是否被填满

    洛谷 三维偏序 

    (这个我也不太会

     

    bitset 优化线段树

    数学家的谜题 

     

    储存状态

    可以用bitset存一些比较大的状态,查询修改也比较快

    牛客之前写过一题,但是我找不到了,太久了

     

    支持与、或、异或运算

  • 相关阅读:
    Python 重要的字符串处理函数
    Python 字符串类型及相关操作
    Windows 7下Git SSH 创建Key的步骤(by 星空武哥)
    Python 列表类型及相关操作
    Python 字典类型及相关操作
    袁老师Py西游攻关之基础数据类型
    PyCharm2017安装教程,包含注册码
    python安装及语法1
    Ubuntu linux安装ssh server
    soap消息机制 讲解
  • 原文地址:https://www.cnblogs.com/PdrEam/p/15555055.html
Copyright © 2011-2022 走看看