《基础学习》之bitset基础运用

bitset存储二进制数位。

bitset就像一个bool类型的数组一样,但是有空间优化——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一。

bitset是需要规定他的大小,就是需要多少位。


关于bitset的定义:

#include
#include            //头文件
using namespace std;

int main(){
	bitset<5> a;
	a[0]=1;
	a[2]=1;
	cout<

输出结果:

00101

关于bitset的运算:

bitset的运算就像一个普通的整数一样,可以进行与(&)、或(|)、异或(^)、左移(<<)、右移(>>)等操作。

#include

using namespace std;

int main(){
	//c是a的初始情况 
	bitset<5> a,b,c;
	a[0]=1;
	b[0]=1;
	c[0]=1;
	a[2]=1;
	c[2]=1;
	b[3]=1;
	cout<<"a:   "<>1;
	cout<<"a>>1:"<

输出结果:

a:   00101
b:   01001
a&b: 00001
a|b: 01101
a^b: 01100
a<<1:01010
a>>1:00101

关于bitset的一道题:

链接:https://www.nowcoder.com/acm/contest/132/C
来源:牛客网

题目描述

一共有 n个数,第 i 个数是 x i 
x i 可以取 [l i , r i] 中任意的一个值。
设 ,求 S 种类数。

输入描述:

第一行一个数 n。 
然后 n 行,每行两个数表示 li,ri

输出描述:

输出一行一个数表示答案。

输入

复制
5
1 2
2 3
3 4
4 5
5 6

输出

复制
26

题解:

#include

using namespace std;
const int MAXN=1e6+10;
bitset a,b;

int main(){
	int n,l,r;
	scanf("%d",&n);
	b[0]=1;
	for(int i=0;i

你可能感兴趣的:(基础学习)