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

【C++干货分享】集合 位运算

//笔记来源:

分享|从集合论到位运算,常见位运算技巧分类总结! - 力扣(LeetCode)


将整数集合用二进制形式表示:

long long s = 10000100100;//用二进制形式表示的一个整数集合

构造原理:第 位为1 <=> 整数集合s中含有元素 i

干货

  • -1 的二进制表示是 111...1111

所以有 -1 & s = s

  • 关于 sub - 1的解读

对于二进制数sub, sub - 1的二进制 相当于 将sub二进制的最低位的 1变成0,并将上述 1右边的所有0变成 1

原理: ^{2^{i}} = \sum_{0}^{i-1}^{2^{k}}

遍历集合的技巧

遍历所有非空子集

for(long long sub=s; sub; sub = (sub-1) & s)
{
		// 解释:关于(sub-1) & s
		//sub-1 可以每次将最低位的 1变成0,并将上述 1右边的所有0变成 1
		//&s 的操作保证了结果中的元素必然仍然是s中的元素,即结果一定是s的子集
)

遍历所有子集(含空集)

long long sub = s;
do{
    //
    sub = (sub-1) & s;
}while(sub != s)

http://www.dtcms.com/a/19832.html

相关文章:

  • AI-TRANS标准草案框架解析
  • STL中list的模拟实现
  • 145,【5】 buuctf web [GWCTF 2019]mypassword
  • 分布式 NewSQL 数据库(TiDB)
  • 基于大数据的北京市天气数据分析系统的设计与实现
  • 【C++】31.C++11​(3)
  • ShenNiusModularity项目源码学习(8:数据库操作)
  • unity学习40:导入模型的 Animations文件夹内容,动画属性和修改动画文件
  • C# Task 学习记录
  • 3、树莓派5 安装VNC查看器 开启VNC服务器
  • linu软件编程——IO
  • 2月15日星期六今日早报简报微语报早读
  • React - 高阶函数-函数柯里化
  • 2015-2024年上市公司商道融绿esg评级数据
  • 寒假刷题Day24
  • Word正文中每两个字符之间插入一个英文半角空格
  • 服务器虚拟化(详解)
  • 枚举Enum用法
  • ros:ur机械臂初识
  • 基于STM32的智能垃圾分类回收系统
  • 【kafka系列】At Most Once语义
  • matlab-simulink
  • 鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
  • TrueNAS in Hyper-V
  • React:初识React
  • 脉冲当量含义
  • 国内已经部署DeepSeek的第三方推荐
  • Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现
  • TypeScript type 和 interface 的区别
  • 计算机视觉-尺度不变区域