bitset简单用法
2024-08-23 20:33:51
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
最新文章
- meta标签用法总结
- SQL_递归查询(复杂查询示例)
- php类自动装载、链式操作、魔术方法
- 转载:第三弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
- ajax案例源码
- OSG 初始化为非全屏窗口
- Android中实现消息推送(JPush)
- hdu5071 2014 Asia AnShan Regional Contest B Chat
- python之super()函数
- 【Cocos2d入门教程五】Cocos2d-x动作篇
- Java多线程性能优化
- 正则化(Regularization)
- Mysql权限控制 - 允许用户远程连接(转载)
- javascript获取当前url中的參数
- jquery 超简单的点赞效果
- 作为新手 HTML5如何自学为好?
- HMM:隐马尔科夫模型-维特比算法
- Django--session(登录用)
- Swift学习之道
- 先装IIS后装.Net Framework
热门文章
- mysql字段类型不是整型的排序问题
- Java刷题笔记
- 【JVM】符号引用和直接引用
- Linux环境下安装PHP的gd库
- 兼容软件,Wine安装,Crossover安装,
- git 问题整理 fetch -p 修剪远程分支
- 解决Python报错:local variable &#39;xxx&#39; referenced before assignment(引)
- 无法将 Ethernet0 连接到虚拟网络”VMnet0″ 详细信息可以在 vmware.log 文件中找到未能连接虚拟机Ethernet0
- POJ 1269 Intersecting Lines (判断直线位置关系)
- Module not found: Error: Can&#39;t resolve ";xxx"; in ";xxx";