bitset基础用法+心得
今天上午听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(){;}
bitset基础用法+心得的更多相关文章
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
- bitset简单用法
bitset的创建: #include<bitset> bitset<32> ar; //默认全为0 bitset<32> ar(n); //n的二进制 bitse ...
- logstash安装与基础用法
若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...
- elasticsearch安装与基础用法
来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...
- BigDecimal最基础用法
BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...
- Vue组件基础用法
前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...
- Smarty基础用法
一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...
- 前端自动化测试神器-Katalon的基础用法
前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...
- Bootstrap fileinput:文件上传插件的基础用法
官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...
随机推荐
- 【Android Developers Training】 77. 使用Wi-Fi P2P进行服务搜索
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 编写运行最简单的java程序——使用记事本编写java程序
第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...
- Example018主页加载时获取焦点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- tp5框架的获取器
tp5的获取器功能很强大,一下子就喜欢上了,你可以在模块里任意定义表里不存在的字段,在前台调用很方便.话不多说直接上demo: 1.命名规则 get + 属性名的驼峰命名+ Attr 直接就能在m ...
- 高效测试用例组织算法pairwise之Python实现
------------------------------------------本文专为<光荣之路培训 >原创,如有转载请注明出处--------------------------- ...
- 支持苹果IPV6 ONLY 的socket 修改方法
首先别错误理解以为app 必须支持 ipv6 的服务端, 只需要支持 ipv6的客户端需要访问 ipv4 的服务端. 目前需要经过 NAT64 转换就能达到目的,客户端只需要支持该转换就能实现, 在 ...
- 谈一款MOBA游戏《码神联盟》的服务端架构设计与实现
一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...
- Linux下protobuf的编译与安装【各种奇葩问题】
1.下载源码 首先,从github上下载protobuf的源码,地址:https://github.com/google/protobuf,我选择下载2.5.0版本. 2.编译protobuf 2.1 ...
- linux函数的阻塞与非阻塞IO及错误处理
1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.li ...
- LInux挂载windows共享磁盘
#!/bin/sh #进行windows paths目录同步 cd /mnt str="//10.33.4.199/linux" result=$(df | grep ${str} ...