bitset基础用法+心得
2024-08-25 10:43:58
今天上午听AntiLeaf学长讲课,获悉了bitset这种神奇的操作,还是大喊一句:stl大法吼啊!
bitset是用来进行一些状态储存的操作。类似于一个标记数组,又类似于状压里面的二进制。
它与状压的共同点是都可以直接进行一些二进制操作。而且好用的是它类似于动态数组,可以开很多位。
需要调用bitset库。
申请:
bitset<100000> b;
进行一些与二进制相同的操作:
b<<1;//b整体左移 b|=10; //b或 1010
位数也是左边是高位,右边是低位。从0开始。可以直接访问为b[0]
初始化bitset对象的方法
bitset<n> b; |
b有n位,每位都为0 |
bitset<n> b(u); |
b是unsigned long型u的一个副本 |
bitset<n> b(s); |
b是string对象s中含有的位串的副本 |
bitset<n> b(s, pos, n); |
b是s中从位置pos开始的n个位的副本 |
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处的二进制位取反 |
b.to_ulong() |
用b中同样的二进制位返回一个unsigned long值 |
os << b |
把b中的位集输出到os流 |
例题:cogs2434
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #include<bitset> #define mod 10007 #define ll long long #define Mod 1000007 using namespace std; ll t,n,m,a,b,c,y,d,e,f,s[200005]; bitset<1000010> ans; inline ll read() { ll sum=0,f=1;char x=getchar(); while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();} while(x>='0'&&x<='9')sum=sum*10+x-'0',x=getchar(); return sum*f; } inline int messi() { freopen("animalcupid.in","r",stdin); freopen("animalcupid.out","w",stdout); t=read(); while(t--) { ans.reset(); ans.set(0); n=read();m=read(); s[0]=read()%mod;a=read()%mod;b=read()%mod;c=read()%mod; y=read()%Mod;d=read()%Mod;e=read()%Mod;f=read()%Mod; for(int i=1;i<=n;i++) { s[i]=((a*s[i-1]*s[i-1])%mod+(b*s[i-1])%mod+c)%mod; ans|=ans<<s[i]; } for(int i=1;i<=m;i++) { y=((y*y*d)%Mod+(y*e)%Mod+f)%Mod; if(ans[y]) printf("yes\n"); else printf("no\n"); } } } int hallmeow=messi(); int main(){;}
最新文章
- ClickOnce部署(3):使用证书
- SQL SERVER 通用分页存储过程,两种用法任你选
- 分享 rabbitMQ入门详解
- iOS FMDB小试了一下
- C# 问题解决思路--《数组bytes未定义》,ASP.NET页面加载顺序
- Today&rsquo;s dictation
- Delphi调用C++写的dll示例
- Library string type(2)——关于String的操作
- Threading Module源码概述(一)
- localStorage和sessionStorage火狐浏览器和其他高级浏览器的区别
- 在线制作css动画——cssanimate
- 解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误
- Vim内直接使用p粘贴系统剪切板
- elipse使用,Java和Javaee模式区别
- VB VB 定义及区别
- spring-boot(六) 邮件服务
- Android 动态注册JNI函数
- centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程
- CDbConnection failed to open the DB connection: could not find driver错误的处理
- java请求url返回json