集合幂级数全家桶

news/2026/1/20 20:26:53/文章来源:https://www.cnblogs.com/zltzlt-blog/p/19508702

集合幂级数 exp

\(e^{F(x)} = \sum\limits_{i \ge 0} \dfrac{F(x)^i}{i!}\),其中若 \(S \cap T = \varnothing\),则 \(x^S \times x^T = x^{S \cup T}\)

定义二元函数 \(F(x, y) = \sum x^S y^{|S|} a_S\),这样可以消除 \(S \cap T = \varnothing\) 的限制。此时 \(x^S y^i \times x^T y_j = x^{S \cup T} y^{i + j}\),即一维是集合的并,一维是加法。

\(x\) 维做 FWT,此时 \(x\) 维变成点乘,即 \(x^S y^i \times x^S y^j = x^S y^{i + j}\)。此时 \(x\) 维独立,对 \(2^n\)\(n\) 次多项式做 exp 即可。

\(O(n^2)\) 算 exp:\(e^{F(x)} = G(x)\),求导有 \(F'(x) G(x) = G'(x)\),对比系数可以求出 \(G(x)\)

集合幂级数 ln

\(\ln F(x) = \sum\limits_{i \ge 1} (-1)^{i - 1} \dfrac{(F(x) - x^{\varnothing})^i}{i}\)

与 exp 类似。

集合幂级数求逆

\(G(x)\) 满足 \(F(x) G(x) = x^{\varnothing}\)

通过询问 ChatGPT 可知 \(\frac{1}{x} = \sum\limits_{i \ge 0} (1 - x)^i\),所以沿用 exp 和 ln 的方法即可。

半在线子集卷积

给定 \(g\),对所有 \(S\) 计算 \(f_S = \sum\limits_{T \subseteq S, T \ne \varnothing} g_T f_{S \setminus T}\)

按照 \(k = |S| = 1, 2, \ldots, n\) 依次计算对应的 \(f_S\)。引入二元函数 \(F_{i, S} = [|S| = i] f_S\)。做到 \(k\)\(|T| < k\) 的贡献已经计算完毕,将 \(F_{k, \ast}\) 做 iFWT 即可。最后再加上 \(g_S\)\(f_S\) 的贡献。然后再对 \(F_{k, \ast}\) 做 FWT,贡献累加到 \(F_{i + k, \ast}\) 的 FWT 数组。

集合幂级数 exp(非素数模数)

考虑 \(O(3^n)\) 算 exp 的方法 \(f_S = \sum\limits_{T \subseteq S, T \ne \varnothing, \operatorname{lowbit}(T) = \operatorname{lowbit}(S)} g_T f_{S \setminus T}\)。总体和半在线子集卷积流程一样,但是我们需要将 \(g\) 的 FWT 和 \(f\) 的 iFWT 做一些改动。具体地,变换时不转移 \(S\) 的最低位。

集合幂级数 ln(非素数模数)

根据组合意义我们有 \(f_S = g_S - \sum\limits_{T \subseteq S, T \ne \varnothing, \operatorname{lowbit}(T) = \operatorname{lowbit}(S)} f_T g_{S \setminus T}\)。套用上述 exp 做法即可。

多项式复合集合幂级数

其实是集合幂级数 exp / ln 的一般化问题:给定 \(a_0, a_1, \ldots, a_n\) 和集合幂级数 \(F(x)\),保证 \([x^{\varnothing}] F(x) = 0\),求 \(\sum\limits_{i = 0}^n a_i F(x)^i\)

对于集合幂级数 \(F(x)\)\([x^S] F(x)^i\) 的含义是,将 \(S\) 无序地划分成 \(T_1 \sqcup T_2 \sqcup \ldots \sqcup T_i\),定义一个划分方案的权值为 \(i! \prod\limits_{j = 1}^i [x^{T_j}] F(x)\)\([x^S] F(x)^i\) 就是所有划分方案的权值和。

考虑利用这个组合意义 DP。设 \(f_{i, j, S}\) 为,当前考虑了最低的 \(i\) 位,之后还要选择 \(j\) 个集合,已经选择的集合的并是 \(S\),划分的权值和。

初值有 \(f_{0, i, \varnothing} = a_i \times i!\)。转移是 \(f_{i, j, S} = f_{i - 1, j, S} + \sum\limits_{\operatorname{highbit}(T) = i, T \subseteq S} f_{i - 1, j + 1, S \setminus T} \times b_T\),其中 \(b_S = [x^S] F(x)\)。转移的意义是选或不选以 \(i\) 为最高位的一个集合。

这个转移可以子集卷积优化。时间复杂度 \(O(\sum\limits_{i = 1}^n (n - i) i^2 2^i)\),通过询问 ChatGPT 老师可知这个的量级是 \(O(n^2 2^n)\),但是常数显然很大。

例题

1. LOJ6673 EntropyIncreaser 与山林

集合幂级数题的套路是:先不考虑连通,得到的答案再求 \(\ln\) 就是考虑连通的答案。

考虑如何计算一个点集内有多少边集满足所有点度数是偶数。每个连通块单独考虑,任取一棵生成树,非树边任意选择,那么会存在唯一一种选择树边的方案,所以方案数就是 \(2^{m - n + 1}\)。对于不连通的情况,每个连通块求和可得方案数是 \(2^{m - n + c}\),其中 \(c\) 为连通块个数。

然后我们得到了 \(F(x)\),答案即为 \([x^U] \ln F(x)\)

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

2. LOJ154 集合划分计数

使用 多项式复合集合幂级数 方法即可。

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

3. PTZ Winter 2020 Day 9 Yuhao Du Contest 7 F Fast as Ryser

第一步是一个很牛的转化:首先将点数补全到偶数,然后连边 \((2i, 2i + 1)\),那么最后每个连通块都是点数为偶数的环或者链。

将一个 \((2i, 2i + 1)\) 看做一个组,写一个 DP 计算对于一个组的子集,形成环或链的方案数。设环的集合幂级数为 \(F(x)\),链的为 \(G(x)\),答案即为 \([x^U] e^{F(x) + G(x)}\)

时间复杂度 \(O(n^2 2^\frac{n}{2})\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1190659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计springboot大气网格化治理智慧平台-报警处理子系统 基于SpringBoot的城市大气环境网格化智能预警与处置平台 SpringBoot驱动的空气质量网格监管报警协同系统

计算机毕业设计springboot大气网格化治理智慧平台-报警处理子系统9w1d1 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。PM2.5爆表那天&#xff0c;整个城市像被按下了灰色滤镜。…

AtCoder Beginner Contest竞赛题解 | AtCoder Beginner Contest 440

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

近十届两院增选院士籍贯 / 出生地排行:苏浙皖湘鲁霸榜

整理了近十届两院增选院士的籍贯、出生地数据&#xff1a; ✅ 维度一&#xff1a;院士「籍贯」&#xff08;最能体现地域文教底蕴&#xff09; 籍贯人数 TOP20 核心榜单&#xff08;头部集中度极高&#xff09; 1、浙江宁波 28 人&#xff08;全国第一&#xff0c;70年的稳定输…

LeetCode 379 电话目录管理系统

文章目录摘要描述题解答案题解代码分析1. 数据结构的选择2. 初始化方法3. get() 方法&#xff1a;分配号码4. check() 方法&#xff1a;检查号码是否可用5. release() 方法&#xff1a;释放号码6. 为什么使用 Set Array 的组合&#xff1f;7. 边界情况处理示例测试及结果示例 …

量子计算模拟器性能基准测试方法论

随着量子算法在金融建模、药物研发等领域的应用突破&#xff0c;量子计算模拟器已成为经典计算机环境验证量子程序的核心工具。软件测试从业者亟需建立一套针对量子特性的标准化基准测试体系。本文旨在系统阐述测试框架的设计原则、关键性能指标及工具链实践方案&#xff0c;为…

基于微信小程序的电子元器件商城系统源码文档部署文档代码讲解等

课题介绍本课题旨在开发一款基于微信小程序的电子元器件商城系统&#xff0c;适配电子元器件品类多、规格杂、采购场景多元的特性&#xff0c;解决传统采购渠道分散、比价繁琐、库存查询不便等痛点。系统以微信小程序为前端载体&#xff0c;依托Node.js搭建后端服务&#xff0c…

【Linux 网络】拒绝传输卡顿!滑动窗口如何让数据 “跑赢” 等待?

一、滑动窗口滑动窗口大小&#xff1a;指的是无需等待确认应答而可以继续发送数据的最大值&#xff1b;注意&#xff1a;这里的无需等待确认应答&#xff0c;不是不要确认应答&#xff0c;而是暂时不要&#xff1b;站在发送方&#xff08;主机A 视角&#xff09;&#xff1a;图…

硬核干货:Checkpoint对齐诅咒与Timer风暴——Flink周期性反压的终极排查

第一章&#xff1a;那只准时敲门的“幽灵”——Checkpoint与其背后的IO风暴我们拿到的是一个极其诡异的现场&#xff1a;每30分钟一次&#xff0c;持续5分钟的反压。这不像是因为数据倾斜导致的“长尾”&#xff0c;也不像代码逻辑死循环导致的“猝死”。它太规律了&#xff0c…

基于微信小程序的付费自习室系统源码文档部署文档代码讲解等

课题介绍本课题聚焦付费自习室行业数字化需求&#xff0c;设计并实现一款基于微信小程序的付费自习室系统&#xff0c;解决传统自习室预约繁琐、计费不透明、座位管理低效等痛点。系统以微信小程序为前端交互入口&#xff0c;采用Node.js搭建后端服务&#xff0c;搭配MySQL数据…

基于微信小程序的高校毕业生公考助手系统源码文档部署文档代码讲解等

课题介绍本课题针对高校毕业生公考备考信息零散、规划混乱、刷题低效等痛点&#xff0c;设计并实现一款基于微信小程序的高校毕业生公考助手系统&#xff0c;为毕业生提供一站式公考备考服务。系统以微信小程序为前端载体&#xff0c;采用Node.js搭建后端服务&#xff0c;结合M…

边缘计算节点延迟专项测试实践指南

1. 测试概述与重要性 边缘计算节点的延迟直接影响实时应用性能&#xff08;如工业自动化、车联网&#xff09;&#xff0c;延迟过高可能导致业务中断或数据不一致。专项测试需评估端到端响应时间、抖动及丢包率等指标&#xff0c;确保节点在5G等低延迟场景下满足SLA要求&#…

大数据领域Kafka的性能调优实战

大数据领域Kafka的性能调优实战&#xff1a;从青铜到王者的进阶指南 关键词&#xff1a;Kafka性能调优、生产者优化、Broker配置、消费者调优、吞吐量与延迟 摘要&#xff1a;在大数据时代&#xff0c;Kafka作为分布式消息队列和流处理平台的"扛把子"&#xff0c;其性…

Flutter 2025 测试策略全景:从单元测试到混沌工程,构建坚不可摧的高质量应用 - 指南

Flutter 2025 测试策略全景:从单元测试到混沌工程,构建坚不可摧的高质量应用 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

LLM Weekly(2026.1.5-2026.1.11)

网络资讯 ChatGPT 健康功能全新上线 OpenAI 推出了 ChatGPT Health,这是一个专属加密空间,可将用户的医疗记录和健康类应用程序与 ChatGPT 相连接,从而提供个性化的非诊断性健康指导。该服务采用数据隔离机制,健康相关对话内容不会用于模型训练,同时支持多重身份验证(MF…

计算机网络经典问题透视:漏桶管制器的工作原理是怎么样的?

在当今这个流量爆炸的时代&#xff0c;无论是云计算、大数据还是边缘计算&#xff0c;都离不开一个核心议题——流量控制。网络拥塞、服务质量&#xff08;QoS&#xff09;下降、系统雪崩&#xff0c;这些问题的根源往往都与失控的流量有关。今天&#xff0c;我们将一起回到计算…

‘huggingface-cli‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

出现“huggingface-cli不是内部命令”的问题&#xff0c;通常由权限、环境变量、命令弃用或虚拟环境未激活导致&#xff0c;可按以下步骤排查解决&#xff1a; 1. 检查管理员权限安装问题若Python环境位于C盘&#xff0c;普通权限运行安装命令可能导致huggingface_hub安装不完整…

小红删数字【牛客tracker 每日一题】

小红删数字 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 网页链接 牛客tracker 牛客tracker & 每日一题&#xff0c;完成每日打卡&#xff0c;即可获得牛币。获得相应数量的牛币&#xff0c;能在【牛币兑换中心】&#xff0c;换取相应奖品&#xff01;助力每日有…

为什么我辞去高薪开发工作?2026年反思

职业转折点&#xff1a;代码之外的觉醒 当我在2026年初递交辞呈时&#xff0c;部门主管看着远超行业均值的薪资单反复确认&#xff1a;"你确定要放弃年薪85万的开发岗&#xff0c;去做测试&#xff1f;" 这个看似悖论的选择背后&#xff0c;藏着对软件行业生态的深度…

情感分享:当代码成为我的第二语言——一位测试工程师的心路历程

在软件测试的世界里&#xff0c;我们常常被定义为“质量守门人”、“Bug猎人”&#xff0c;但鲜少有人关注我们与代码之间建立的那份深刻而复杂的情感连接。本文从一个资深软件测试工程师的视角出发&#xff0c;探讨代码如何超越工具属性&#xff0c;逐渐成为我们思维、表达甚至…