https://www.zybuluo.com/ysner/note/1327705

原理

\(bitset\)的原理是将一大堆值为\(0/1\)的数压成一个数。

操作

  • 通过\(i>>x\)等操作,我们可以快速访问\(i\)数组右移\(x\)位后的状态(即只剩右数\(n-x\)个值)。
  • \(bitset\)数组可以当作一个数来看待并进行>>,<<,&,^等操作(详见高斯消元总结)。

    函数

  • \(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\)处的二进制位取反

关于bitset的更多相关文章

  1. strtok源码 bitset 空间压缩

    源代码里有一段: unsigned char map[32]; /* Clear control map */ for (count = 0; count < 32; count++) map[ ...

  2. DFS序+线段树+bitset CF 620E New Year Tree(圣诞树)

    题目链接 题意: 一棵以1为根的树,树上每个节点有颜色标记(<=60),有两种操作: 1. 可以把某个节点的子树的节点(包括本身)都改成某种颜色 2. 查询某个节点的子树上(包括本身)有多少个不 ...

  3. 把《c++ primer》读薄(3-3 标准库bitset类型)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...

  4. BitSet构造函数的两种特例

    C++11之后,bitset的构造函数新加了两种形式: bitset<bits>::bitset (const string& str, string::size_type str ...

  5. Bitset<>用于unordered container时的默认hash函数

    自从c++11起,bitset用于unordered container,将会提供默认的hash函数. 在gcc中,相关代码如下: // DR 1182. /// std::hash speciali ...

  6. hdu 4920 Matrix multiplication bitset优化常数

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  7. hdu 5506 GT and set dfs+bitset优化

    GT and set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  8. (DFS、bitset)AOJ-0525 Osenbei

    题目地址 简要题意: 给出n行m列的0.1矩阵,每次操作可以将任意一行或一列反转,即这一行或一列中0变为1,1变为0.问通过任意多次这样的变换,最多可以使矩阵中有多少个1. 思路分析: 行数比较小,先 ...

  9. Gym 100917J---Judgement(01背包+bitset)

    题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatements The jury ...

  10. C++二进制文件中读写bitset

    这个比较简单,直接上代码: bitset< > *b = >(); bitset< > *c = >(); ofstream out("I:\\test. ...

随机推荐

  1. 字典树模板题 POJ 2503

    #include <cstdio> #include <cstring> ],fr[]; int st; struct Tire{ ]; ]; }node[]; void in ...

  2. idea添加虚拟参数

    1. 2.

  3. 2016 Multi-University Training Contest 4 solutions BY FZU

    1001 Another Meaning 对于这个问题,显然可以进行DP: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义: ...

  4. [CodePlus2017]汀博尔

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 158  Solved: 61[Submit][Status][Discuss] Description ...

  5. [USACO08OPEN]牛的车Cow Cars

    题目描述 N (1 <= N <= 50,000) cows conveniently numbered 1..N are driving in separate cars along a ...

  6. mybatis连接mysql

    配置web.xml 1. <context-param> 参考文章 <context-param>    <param-name>contextConfigLoca ...

  7. poj3905 2sat!

    这次已经不是2sat的问题了,相信2sat已经不是问题了,最后一题2sat,竟然跪在输入上! 千万注意scanf(%c)!读入!!!!有空格也读啊!!!读入+ -一定要用字符读啊??笨死算了!被人水死 ...

  8. django学习之- session

    session和cookie关系:session依赖于cookie基于cookie做用户验证时,敏感信息不适合放在cookie中原理:cookie定义:保存在用户游览器端的键值对session定义:保 ...

  9. HDU 6370 dfs+并查集

    Werewolf Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  10. Topcoder 658 650 point

    Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个 ...