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

SOSDP

\(\text{SOSDP: Sum over Subsets DP}\)

例子:给定一个序列长度为 \(2^n\) 的序列 \(a\),求对于 \(i = 0,1,\cdots,2^n-1\)\(A_i\),其中 \(A_i = \sum\limits_{j\&i=j}a_j\),即 \(i\) 的子集和。

\(f_{i,s}\) 表示 \(s\) 的前 \(i+1\) 个低位子集的和,有:

\[f_{i,s} = \begin{cases} f_{i-1,s}, & (s>>i)\&1=0\\ f_{i-1,s} + f_{i-1, s \oplus 2^i}, & (s>>i)\&1=1 \end{cases} \]

初始化 \(f_{0, i} = a_i + a_{i\oplus 1}\)。时间复杂度 \(O(n2^n)\),空间复杂度 \(O(n2^n)\)

rep(i, 1, 1 << n) f[0][i] = a[i] + a[i ^ 1];
rep(i, 1, n - 1) rep(j, 0, (1 << n) - 1)
{f[i][j] = f[i - 1][j];if((j >> i) & 1) f[i][j] += f[i - 1][j ^ (1 << i)];
}

\(f_i\) 的转移只和 \(f_{i-1}\) 有关,考虑优化掉这一位。

\((s>>i)\&1=1\) 时,\(s \oplus 2^i < s\),可以将 \(s\) 这一维倒序枚举:

rep(i, 0, 1 << n) f[i] = a[i];
rep(i, 1, n) per(j, 0, (1 << n) - 1) if((j >> i) & 1) f[j] += f[j ^ (1 << i)];

再仔细想一下,在第 \(i\) 轮时,\(f_j\) 都是由 \(f_{j\oplus 2^i}\) 转移来的,更新为第 \(i\) 层的 \(f_j\)\(j\) 的第 \(i\) 位都是 \(1\),第 \(i-1\) 层的 \(f_{j\oplus 2^i}\)\(j\oplus 2^i\) 的第 \(i\) 为都是 \(0\)。所以正序枚举 \(j\) 也是可以的。

rep(i, 0, 1 << n) f[i] = a[i];
rep(i, 1, n) rep(j, 0, (1 << n) - 1) if((j >> i) & 1) f[j] += f[j ^ (1 << i)];

时间复杂度 \(O(n2^n)\),空间复杂度 \(O(2^n)\)

以上是求 \(i\) 的子集的和,要是求超集,可以把二进制的 \(0\) 看做 \(1\)\(1\) 看做 \(0\) 来做一次 \(DP\)

rep(i, 0, 1 << n) f[i] = a[i];
rep(i, 1, n) rep(j, 0, (1 << n) - 1) if(!((j >> i) & 1)) f[j] += f[j ^ (1 << i)];

\(\text{SOSDP}\) 与高维前缀和的关系:

给定 \(n\) 维序列 \(a\),求所有 \(S\),其中

\[S_{i_1,i_2,\cdots,i_n} = \sum\limits_{j_1\le i_1,j_2\le i_2,\cdots,j_n\le i_n}a_{j_1,j_2,\cdots,j_n} \]

若每一维的大小为 \(2\),则可以状态压缩,然后用 \(\text{SOSDP}\) 来做。

http://www.sczhlp.com/news/213324/

相关文章:

  • 2025年保洁公司推荐排行榜,驻场保洁/钟点保洁/开荒保洁/外包保洁/商场保洁/办公楼保洁/工厂保洁/医院保洁/企业保洁服务优选指南
  • 网站建设刂搜金手指下拉贰伍如何做招聘网站运营
  • wordpress建站动画网络公司企业网站模板
  • 网站建设4435买的网站模板怎么上传
  • 万盛网站建设公司家装设计师有前途吗
  • 怎么选择昆明网站建设上海电商app开发
  • 东莞地产公司网站建设网址安全检测
  • 网站开发软件工程师公司建设网站算入什么会计科目
  • 个人建设网站服务器怎么解决自媒体时代做网站有前途吗
  • 如何创建自己网站做整站优化
  • 网站注意事项wordpress 鼠标翻页
  • 西安团购网站建设服务器个人买能干什么
  • 免费建站的网址哈尔滨人社app官网
  • 网站内容分享福田手机网站建设
  • 大丰做网站需要多少钱专业建站团队
  • 深圳网站设计公司发展历程linux系统网站架构
  • 有什么网站建设软件辽宁网站建设多少钱
  • 天津网站建设开发有哪些怎么建立自己的网站卖东西
  • 合肥建设工会网站东莞最新新闻
  • 网站建设有趣名称网页设计专业公司
  • 西安做网站公司报价企业网站引导页模板
  • 网站开发难题网站制作合同
  • 怎样维护网站建设wordpress主题添加字体设置
  • 平台门户网站建设搜seo
  • 同性恋色做视频网站asp业务网站
  • 何如做外贸网站推网要做网络推广
  • 扬中网站推广价格网站商城首页怎么做吸引人
  • 2025年10月油烟机品牌推荐:海信领衔静音技术榜对比评测
  • Windows 如何关闭 dep数据执行保护 - 软件双击没反应的解决办法
  • 2025年整平机厂家推荐排行榜,整平机/校平机/矫平机/开平机/平板机/矫直机/校直机,高精度/精密/液压式/数控/金属/高效稳定/多种规格/全自动整平机公司推荐