bitset 学习笔记
引入
顾名思义, \(\texttt{bitset}\) 是用 \(\texttt{bit}\) 组成的 \(\texttt{set}\);
区别于普通的 \(\texttt{bool []}\) 或 \(\texttt{vector<bool>}\),\(\texttt{bitset}\) 的每一位都用一 \(\text{bit}\) 的内存来存储,而非一 \(\text{byte}\);
故, \(\texttt{bitset}\) 总是用来卡常。
正题
首先一些介绍一些基础用法:
用法
一些初始化
bitset<M> Name
:长度为 \(M\) 的 \(\texttt{bitset}\),默认为空。(\(M\) 为常量,下同)bitset<M> Name(N)
:长度为 \(M\) 的 \(\texttt{bitset}\),初始化为int
类型的变量 \(N\) 的二进制。bitset<M> Name(S)
:长度为 \(M\) 的 \(\texttt{bitset}\),初始化为string
类型的 01 字符串 \(S\)。
一些运算符重载
operator [] (int i)
:返回 \(\texttt{bitset}\) 的第 \(i\) 位,但是从右往左数。operator < (bitset<N> b)
:返回两 \(\texttt{bitset} 比较的结果\)。operator > (bitset<N> b)
:同上。operator << (int t)
operator >> (int t)
operator & (bitset<N> b)
operator | (bitset<N> b)
operator ~ ()
operator ^ (bitset<N> b)
好吧后面的不想写了,自行脑补()
直接例题。
例题
AT_agc020_c
考虑将所有集合的和都存进一个 bitset
里,如果 Bit[i] != 0
那么就代表存在一个集合的和为 \(i\);
那么可以这样写:
Bit[0] = 1;
for (int i = 1; i <= n; i++) {
cin >> tmp;
Bit |= (Bit << tmp);
}
P4306
我们充分发扬人类智慧:
用 bitset 优化 Floyd,\(n^2\) 枚举两点,如果两点联通则将两点可达的所有点取并集。
这样速度快得飞起,在 \(n=2000\) 时都可以在 138ms 内卡过
CF620E
说实话这道题用 bitset
硬往树剖上扣就可以了,不再赘述。
bitset 学习笔记的更多相关文章
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- Day 3 学习笔记
Day 3 学习笔记 STL 模板库 一.结构体 结构体是把你所需要的一些自定义的类型(原类型.实例(:包括函数)的集合)都放到一个变量包里. 然后这个变量包与原先的类型差不多,可以开数组,是一种数据 ...
- OI知识点|NOIP考点|省选考点|教程与学习笔记合集
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
随机推荐
- Linux基础-查看和设置环境变量
一,查看环境变量 二,环境变量类型 三,设置环境变量 四,参考资料 一,查看环境变量 在 Linux中,环境变量是一个很重要的概念.环境变量可以由系统.用户.Shell 以及其他程序来设定,其是保存在 ...
- PHP调用Python无返回或提示No Module
问题:自己通过命令行执行python正常,但通过php调用就没有反应.解决方法:1.首先检查一下php有没有执行权限,简单粗暴的:sudo chmod 777 xxx.php2.Python如果有中文 ...
- 如何用 Spring AI + Ollama 构建生成式 AI 应用
为了构建生成式AI应用,需要完成两个部分: AI大模型服务:有两种方式实现,可以使用大厂的API,也可以自己部署,本文将采用ollama来构建 应用构建:调用AI大模型的能力实现业务逻辑,本文将采用S ...
- Mellanox hp 544+FLR QSFP 40G 网卡升级固件及性能测试
烧录命令参考视频: 相关视频: https://www.youtube.com/watch?v=_2-qPV1giEc flint -allow_psid_change -d /dev/mst/mt4 ...
- Linux Shell_函数
目录 简要介绍 系统函数 basename direname 自定义函数 基本语法 简要介绍 shell编程和其它编程语言一样,有系统函数,也可以自定义函数.系统函数中,我们这里就介绍两个. 系统函数 ...
- 树莓派开机自启动热点(使用有线eth0上网,使用wlan0进行热点)
一.背景内容 其实就是接了一单,有人需要我帮忙配置一下树莓派开机启动热点.这边做个记录,该方式树莓派4B.3B都可以使用. 二.实际操作 1.使用网线连接路由器和树莓派 树莓派的网络接口一共有三个,分 ...
- 【Azure App Service】在App Service for Windows上验证能占用的内存最大值
问题描述 在创建App Service服务的时候,根据定价层不同,内存使用的最大值也有不同.但在实际测试中,发现内存最大只能占用2GB左右, 而定价层中内存分配明明是大于2GB(比如B3定价层的内存为 ...
- Ymodem协议详解
Xmodem.Ymodem和Zmodem协议是最常用的三种通信协议. Xmodem协议是最早的,传输128字节信息块. Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1 ...
- Redis未授权漏洞复现
目录 Redis 漏洞的产生条件及利用 Redis环境搭建 漏洞复现 利用Redis写入Webshell 利用Redis写入SSH公钥 利用Redis写入计划任务 Redis安全防护 Redis re ...
- ClickHouse之物化MySQL
Creates ClickHouse database with all the tables existing in MySQL, and all the data in those tables. ...