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

关于子集的枚举与高维前缀和

今天集训的题我已经写不动了,下周开始会复习 dp, 现在就提前把一些东西补一补,这个说不好会在之后状压里边用到。

枚举子集

如何遍历一个集合的子集

通常我们会采取递归的方式,是 \(O(2^n)\) 的,但是这个样子我们在具体使用的时候是很不方便的,尤其是我们在对于一些二进制的东西做文章的时候。

所以我们需要这个循环形式的枚举子集。

for(int s=u; s; s=(s-1)&u)

这个样子我们就是在枚举 \(s\)\(u\) 的子集了。

先谈正确性,后谈复杂度。

为什么这个东西可以不重不漏?

很明显的,我们的减一是严格下降的,按位与是严格不升的,每一次操作必然会变小,故不会重复。

至于正确性,我们的减一实际上是删除 s 中最后一个一,再把它的右边全部变成一。我们为了让这个东西变成新的子集,我们需要删除 u 之中没有包含的 1,这个我们直接按位与清除一下就好啦。

时间复杂度就是明显的了,我们仅仅需要关注 1 的数量,复杂度自然是 \(O(2^{popcount(u)})\)

如何遍历一个集合子集的子集

for(int m=0; m<(1<<n); ++m){for(int s=m; s; s=(s-1)&m){......}
}

也就是直接套用上边的。

这个东西的复杂度是奇妙的,它竟然是 \(O(3^n)\) 的,比我们想象中要底很多很多。

如果 \(m\) 拥有 \(k\)\(1\),那么我们会枚举出来 \(2^k\) 个子集。

而对于一个 \(k\),我们可以找出来 \(\binom{n}{k}\) 个对应的集合满足有 \(k\) 个 1。

总数就变成了:\(\sum_{k=0}^{n}\binom{n}{k}2^k\)

根据二项式定理,这个东西等于 \((1+2)^n\) 的展开,因此是 \(O(3^n)\) 的,似乎很有用,避免了我们傻傻的 \(2^n\times 2^n\) 的枚举。

高维前缀和

又称 sosdp,我不知道为什么。

我们平常做一维或者二维前缀和都是用容斥原理求的,以二维为例。

\(sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j]\)

但是我们还有一个求法,就是一维一维处理。

for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)a[i][j] += a[i - 1][j];
for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)a[i][j] += a[i][j - 1];

like that.

这个样子是一样的,我们采取这个思路。

对于求解 \(0\le i\le 2^n-1\)\(\sum_{j\in i} a[j]\) 这样的东西,我们可以使用这个思路。

我们不妨把集合看作多维空间中的点,第 \(i\) 位的 0/1 表示第 \(i\) 维的坐标。

于是乎就可以像之前那么做了,枚举维数与子集,在当前维度是 1 的地方从当前维度是 0 的地方转移过来。

for(int i=0; i<n; ++i){for(int j=0; j<(1<<n); ++j){if(j&(1<<i)) dp[j]+=dp[j^(1<<i)];}
}

于是就没有了,显然我们从枚举子集的 \(O(3^n)\) 优化到了 \(O(n\times 2^n)\)

http://www.rkmt.cn/news/14730.html

相关文章:

  • CSP-S模拟26
  • 关于滚动数组
  • 第九篇
  • 2025 年宁波搬家公司推荐 TOP 权威榜单发布,多维度解读宁波搬家服务公司创新亮点举措
  • 10-1
  • 2025母线槽源头厂家 TOP 工厂权威榜单揭晓,密集型、封闭、浇筑、耐火、防火、防水、插接式母线槽公司推荐!
  • 2025 铜覆钢圆钢生产商厂家 TOP 企业品牌推荐榜单,铜覆钢接地极 / 棒 / 圆钢 / 扁钢 / 圆线 / 绞线 / 角钢 / 扁铁 / 管公司推荐这 10 家
  • CVPR-2025 | 具身导航指令高效生成!MAPInstructor:基于场景图的导航指令生成Prompt调整策略 - 详解
  • 乱七八糟的国庆做题记录
  • 完整教程:学术论文 Word 样式规范
  • 2025青海视频号运营优质公司推荐榜:专业服务与创新策略口碑
  • Future相关并发类使用
  • 2025 年舞台厂家 TOP 品牌企业权威推荐榜单,铝合金舞台、活动舞台、快装舞台、舞台架、折叠舞台、演出舞台、演唱会舞台桁架、舞台设计公司推荐
  • 2025 年知识库应用工具系统平台推荐排行榜,企业 / 行业 / 专家 / 问答 / 智能 / 培训 / 协同 / 办公 / 内部 / 外部 / 个人 / 客服 / 营销知识库应用软件推荐!
  • 2025 年移民服务公司性价比排行:美国、加拿大等国 TOP 机构,综合费用与服务质量的考量!
  • 2025 年水泥墩公司推荐最新榜单白皮书发布,圆形 / 方形 / 光伏水泥墩 / 围挡水泥墩 / 护栏水泥墩 / 交通水泥墩 / 防撞水泥墩源头厂家推荐
  • 2025 年钢球厂家 TOP 企业品牌推荐排行榜,轴承 / 碳 / 精密 / 汽配 / 440C 不锈钢球 / 420 不锈钢球 / 304 不锈钢球 / 316L 不锈钢球制造商推荐这十家公司!
  • 2025 年低代码平台厂商 TOP 权威推荐排行榜:深度洞察低代码平台行业实力与创新优势
  • MTKdroidTools左下角: 白色、红色、蓝色、黄色、绿色不同颜色作用
  • 苏州昆山ai培训/2025苏州AI应用技能实战培训排行榜:聚焦落地,赋能企业数字化转型
  • 信友队考试总结
  • iPhone iPad苹果设备 远程控制windows - 教程
  • 实用指南:解码器系列(1)BERT
  • GitLab沦为僵尸网络——共享Runner如何引发大规模DoS攻击
  • OI 笑传 #14
  • 2025年算法备案咨询服务公司TOP最新推荐排行榜单,互联网信息服务,深度合成服务,ai算法备案,互联网算法备案,国家生成式人工智能服务备案咨询公司
  • 深入解析:Python 类基础详解
  • 在线PS的强大功能一览:从基础修图到高级合成,还有这3款免费软件推荐!
  • 2025 年高压氧舱厂家 TOP 推荐榜单揭晓,家用,高原,小型,单人,民用,专业,医用,家庭,智能,进口高压氧舱公司推荐!
  • oppoR9m刷Linux系统:开启开发者模式