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 ...
随机推荐
- lnmp状态监控自动重启服务脚本sh
#!/bin/bash ###获取当前时间 time="$(date +"%Y%m%d-%H:%M")" ###查看fpm服务是否运行 i=`netstat - ...
- AvaloniaUI项目离线开发全攻略:IDE安装、模板应用与NuGet私有化部署一站式解决
1. 引言 在网络受限或完全离线的环境中开发.NET项目(本文示例为Avalonia UI项目),可能会遇到一些挑战.本文将为您提供一套完整的离线开发解决方案,包括IDE的安装.Avalonia UI ...
- LLM论文研读: GraphRAG的替代者LightRAG
1. 背景 最近有一个很火的开源项目LightRAG,Github6.4K+星※,北邮和港大联合出品,是一款微软GraphRAG的优秀替代者,因此本qiang~得了空闲,读读论文.跑跑源码,遂有了这篇 ...
- Object.assign:对象属性复制,浅拷贝
Object.assign = Object.assign || function(){ if(arguments.length == 0) throw new TypeError('Cannot c ...
- SQLSERVER 2019数据库(可疑) 数据修复案例
2019 数据库 , 在正常使用过程中 , 服务器突然断电 , 重新启动服务器后 , 数据库变为(可疑). [数据恢复故障分析] 由于数据库在正常读写操作过 , 服务器突然断电 , 导致数据库无法把所 ...
- Redis中常见的延迟问题
使用复杂度高的命令 Redis提供了慢日志命令的统计功能 首先设置Redis的慢日志阈值,只有超过阈值的命令才会被记录,这里的单位是微妙,例如设置慢日志的阈值为5毫秒,同时设置只保留最近1000条慢日 ...
- AFL-QBDI与AFL-Unicorn实战
文章一开始发表在微信公众号 https://mp.weixin.qq.com/s/wNeeuS3XojfZWvtAJ9xGlQ Fuzz Android Native库 为了能够Fuzz Androi ...
- 【第2章】matlab程序设计基础
matlab语言的常量与变量 matlab语言的变量命名规则 由一个字母引导,后面可以为其他字符. 区分大小写 如Abc ≠ ABc matlab的保留常量 以下为系统保留常量,自己定义的变量不能与他 ...
- openEuler欧拉配置MySQL8的MGR单主双从
一. 系统优化(三个节点全部操作) 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux echo "S ...
- 【Amadeus原创】docker安装TOMCAT,并运行本地代码
1,docker 下载tomcat [root@it-1c2d ~]# docker pull tomcat ... [root@it-1c2d ~]# docker images REPOSITOR ...