当前位置: 首页 > ds >正文

Bitset

基本功能

类似一个二进制的数字, b i t s i t bitsit bitsit只能存储 1 1 1或者 0 0 0 t r u e true true或者 f a l s e false false),比如下面这一条:
在这里插入图片描述

定义
bitset<长度>名字;

当没有写using namespace std时,需要在前面加上std::的前缀。

操作

count():返回true的数量。
size():返回的大小。
any():若存在某一位是 true 则返回 true,否则返回 false。
none():若所有位都是 false 则返回 true,否则返回 false。
all():若所有位都是 true 则返回 true,否则返回 false。
set():将整个 bitset 设置成 true。
set(位置,true/false)):将某一位设置成 true/false。
reset():将整个 bitset 设置成 false。
reset(位置):将某一位设置成 false。相当于set(位置, false)
flip():翻转每一位(相当于异或一个全是1的bitset)。
flip(pos):翻转某一位。
to_string():返回转换成的字符串表达。
to_ulong():返回转换成的 unsigned long 表达。
to_ullong():返回转换成的 unsigned long long 表达。

注意

b i t s e t bitset bitset只能和同类型的变量进行 & \& & ∣ | ! ! !的位运算。

例题1

Switches and Lamps
由于 n ≤ 2000 n\le2000 n2000,所以可以考虑直接暴力。
每次选一个开关不管,看最后能不能打开所有灯。

//https://vjudge.net/problem/CodeForces-985B
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
void putstr(string s){for(int i=0;i<s.size();i++)putchar(s[i]);
}
int n,m;
bitset<2005>a[N];
signed main(){ios::sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){char x;cin>>x;if(x=='1')a[i].set(j,1);//初始化bitset}}for(int i=1;i<=n;i++){bitset<2005>t;for(int j=1;j<=n;j++){if(i==j)continue;t|=a[j];}if(t.count()==m){//判断是否所有灯都打开putstr("YES");return 0;}}putstr("NO");
}

例题2

AT_abc258_g [ABC258G] Triangle
特水的一道 G G G题。
思路:首先,先找到两个有边相连的点,这两个点连接的共同的点就是两点贡献的答案。

//https://vjudge.net/problem/AtCoder-abc258_g
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e3+5;
void print(int x){if(x<0)putchar('-'),x=-x;if(x<10){putchar(x+'0');return;}print(x/10);putchar(x%10+'0');
}
int n;
bitset<3005>a[N];
signed main(){ios::sync_with_stdio(0);cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){char x;cin>>x;if(j<=i)continue;//防止重复计算if(x=='1')a[i].set(j,1);//初始化}}int ans=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(a[i][j]){//有边相连bitset<3005>x=a[i]&a[j];//两点贡献ans+=x.count();}}}print(ans);
}
http://www.xdnf.cn/news/9521.html

相关文章:

  • SAR ADC 比较器的响应设计
  • 如何从经纬度数据中判断哪个是经纬度
  • 第二十一章:数据治理之数据安全:数据安全的驱动因素以及常见的数据安全举措
  • 一对多 多对一
  • 调制与解调技术科普|通信系统是如何传送信息?如何还原出原始信息?【无线通信小百科】
  • 【贪心 逆向思考 并集查找 数学归纳法】P7162 [COCI 2020/2021 #2] Sjekira|普及+
  • 【RP2350】香瓜树莓派RP2350之USB HID
  • 《P1763 埃及分数》
  • Acrobat Reader 无法在 Windows 11及10 中打开的5种修复方法
  • 数据库表添加索引
  • STM32 Modbus RTU从机开发实战:核心实现与五大调试陷阱解析
  • 什么是Windows内存压缩? win10/11系统启用和禁用内存压缩的教程
  • HTB-Puppy
  • DAY 38 Dataset和Dataloader类
  • Linux网络编程(一)
  • 医疗影像检测系统设计与实现
  • open3d保存为pcl可以读取的ply点云
  • Windows 子系统 WSL 中宝塔安装 supervisor 启动失败解决方案
  • 《计算机组成原理》第 1 章 - 计算机系统概论
  • 工控安全审计与网络流量监控系统的协同防御
  • ‌CDGP|企业数据治理:莫让“打补丁”成为常态
  • STL容器使用中的常见问题解析
  • 辛格迪客户案例 | 博福-益普生实施YonSuite,同步开展计算机化系统验证(CSV)
  • Druid连接池使用和源码分析
  • 为Windows用户量身定制的监控方案
  • 通过 API 获取 1688 平台订单接口的技术实现
  • LeetCode 118 题解--杨辉三角
  • 软考 系统架构设计师系列知识点之杂项集萃(77)
  • 1435系列信号发生器
  • 2025年上半年软考系统架构设计师--案例分析试题与答案