bitset的创建:

#include<bitset>

bitset<32> ar; //默认全为0
bitset<32> ar(n); //n的二进制
bitset<32> ar(str); //01串
bitset<n> ar(str,pos,n); //从str第p位开始的n位

###基础用法:

ar.size();//返回位数
ar.count();//返回1的个数
ar.any();//返回是否有1
ar.none();//返回是否没有1
ar.test(p);//返回第p位是不是1
ar.set();//全部设为1
ar.set(p);//第p位设为1
ar.reset();//全部设为0
ar.reset(p);//第p位设为0
ar.flip();//全部反转
ar.flip(p);//第p位反转
ar.to_ulong();//返回unsigned long
ar.to_ullong();//返回unsigned long long
ar.to_string();//返回string

###例题:

515. 「LibreOJ β Round #2」贪心只能过样例

(牛客练习赛22也有这个题)

AC代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <bitset>
#define lowbit(x) (x&(-x))
using namespace std;
typedef long long LL;
const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;
int n, l, r;
int main(int argc, char const *argv[]){
while(~scanf("%d", &n)){
bitset<1000005> a, b;
b[0] = 1;
while(n--){
scanf("%d%d", &l, &r);
for(int i = l; i <= r; ++i){
a |= (b<<i*i);
}
b = a;
a.reset();
}
printf("%d\n", b.count());
}
return 0;
}

####统计二进制中1的数量:

//方法一:
int bitCount(unsigned int n){
unsigned int tmp = n - ((n >> 1) & 033333333333) - ((n >> 2) & 011111111111);
return ((tmp + (tmp >> 3)) & 030707070707) % 63;
} //方法二:
bitset<32> a(n);
a.count(); //方法三:
__builtin_popcount(n)//返回二进制位中有多少个1
__builtin_popcountll//longlong
__builtin_parity(n)//返回二进制位中1的数量的奇偶性,奇数返回1,偶数返回0
__builtin_ffs(n)//返回二进制末尾最后一个1的位置,从一开始
__builtin_ctz(n)//返回二进制末尾后面0的个数,当n为0时,和n的类型有关 #define LeftPos(x) 32 - __builtin_clz(x) - 1
#define LeftPosll(x) 64 - __builtin_clzll(x) - 1

最新文章

  1. meta标签用法总结
  2. SQL_递归查询(复杂查询示例)
  3. php类自动装载、链式操作、魔术方法
  4. 转载:第三弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
  5. ajax案例源码
  6. OSG 初始化为非全屏窗口
  7. Android中实现消息推送(JPush)
  8. hdu5071 2014 Asia AnShan Regional Contest B Chat
  9. python之super()函数
  10. 【Cocos2d入门教程五】Cocos2d-x动作篇
  11. Java多线程性能优化
  12. 正则化(Regularization)
  13. Mysql权限控制 - 允许用户远程连接(转载)
  14. javascript获取当前url中的參数
  15. jquery 超简单的点赞效果
  16. 作为新手 HTML5如何自学为好?
  17. HMM:隐马尔科夫模型-维特比算法
  18. Django--session(登录用)
  19. Swift学习之道
  20. 先装IIS后装.Net Framework

热门文章

  1. mysql字段类型不是整型的排序问题
  2. Java刷题笔记
  3. 【JVM】符号引用和直接引用
  4. Linux环境下安装PHP的gd库
  5. 兼容软件,Wine安装,Crossover安装,
  6. git 问题整理 fetch -p 修剪远程分支
  7. 解决Python报错:local variable &#39;xxx&#39; referenced before assignment(引)
  8. 无法将 Ethernet0 连接到虚拟网络”VMnet0″ 详细信息可以在 vmware.log 文件中找到未能连接虚拟机Ethernet0
  9. POJ 1269 Intersecting Lines (判断直线位置关系)
  10. Module not found: Error: Can&#39;t resolve &quot;xxx&quot; in &quot;xxx&quot;