今天上午听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(){;}

  

最新文章

  1. ClickOnce部署(3):使用证书
  2. SQL SERVER 通用分页存储过程,两种用法任你选
  3. 分享 rabbitMQ入门详解
  4. iOS FMDB小试了一下
  5. C# 问题解决思路--《数组bytes未定义》,ASP.NET页面加载顺序
  6. Today&rsquo;s dictation
  7. Delphi调用C++写的dll示例
  8. Library string type(2)——关于String的操作
  9. Threading Module源码概述(一)
  10. localStorage和sessionStorage火狐浏览器和其他高级浏览器的区别
  11. 在线制作css动画——cssanimate
  12. 解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误
  13. Vim内直接使用p粘贴系统剪切板
  14. elipse使用,Java和Javaee模式区别
  15. VB VB 定义及区别
  16. spring-boot(六) 邮件服务
  17. Android 动态注册JNI函数
  18. centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程
  19. CDbConnection failed to open the DB connection: could not find driver错误的处理
  20. java请求url返回json

热门文章

  1. 简单的视频采集demo
  2. 发布.NET MVC网站 到Azure
  3. Charles抓包工具安装与配置
  4. 【Android Developers Training】 20. 创建一个Fragment
  5. example001点击隐藏
  6. CSS样式表之background背景
  7. 二、redis集群搭建
  8. WriteTeacherObj
  9. Watson Explorer Analytical Components 3 - use case scenarios
  10. 对于所有对象都通用方法的解读(Effective Java 第二章)