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

【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.kler.cn/a/547912.html

相关文章:

  • C++ references
  • SQLMesh 系列教程4- 详解模型特点及模型类型
  • TongETLV3.0安装指引(by lqw)
  • 1-8 gitee码云的注册与使用
  • OpenAI发布新模型及会员订阅计划:o3-mini、GPT-4.5与GPT-5的全新体验
  • 如何学习Elasticsearch(ES):从入门到精通的完整指南
  • 【读点论文】Rewrite the Stars将svm的核技巧映射到高维空间,从数理逻辑中丰富特征维度维度
  • 【MySQL】第五弹---数据类型全解析:从基础到高级应用
  • 标贝科技参编国内首个AIGC大模型功能测试标准
  • 2025年二级建造师报名流程图解
  • 借助 OpenCV 库实现实时的脸部识别
  • 2月15日星期六今日早报简报微语报早读
  • 08模拟法 + 技巧 + 数学 + 缓存(D1_模拟法)
  • html css js网页制作成品——HTML+CSS+js情人节网页设计(5页)附源码
  • vue+springboot+webtrc+websocket实现双人音视频通话会议
  • 仿 RabbitMQ 消息队列6(实战项目)
  • DeepSeek 从入门到精通学习指南,2025清华大学《DeepSeek从入门到精通》正式发布104页pdf版超全解析
  • CAS单点登录(第7版)16.模仿
  • 如何使用Three.js制作3D月球与星空效果
  • Deesek:新一代数据处理与分析框架实战指南