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

集合幂级数笔记

希望大家一直记得我。
“希望大家永远忘了我。”

这是一篇集合幂级数学习笔记

阅前须知:作者神志不清,文章可能出现大量错别字与病句。如有发现不要请不要指出,就让它错在哪里吧

定义

首先来理解形式幂级数,即大家所熟知的多项式:\(F = \sum a_ix^{i}\),它表示一个函数本身

而集合幂级数表示的是一个定义域 \(S\subseteq U=\{1,\cdots,n\}\) 的函数的取值表,即 \(F = \sum\limits_{S\subseteq U}f_Sx^S\) 表示对于所有 \(S\subseteq U\),函数在 \(S\) 处的取值是 \(f_S\)。这里 \(x^S\) 没有实际意义,只是一个占位符,表示这是 \(S\) 处的取值

后文可能会用 \(x=\sum\limits_{p\in S}2^{p-1}\) 来代替 \(S\)

运算

加法

和多项式加法一样,每一位对应相加即可,注意要保证全集相等才能相加

并/交/异或卷积

\(h_S=\sum\limits_{X\cup/\cap/\oplus Y=S}f_Xg_Y\),与多项式一样,使用 FWT 解决。这里只讲或卷积,其他情况同理

大致思想与 NTT 类似,做变换后逐位相乘再做逆变换

\(f^\prime_S=\sum\limits_{X\subseteq S}f_X\),那么:

\[f^\prime_S\times g^\prime_S=(\sum_{X\subseteq S}f_X)\times(\sum_{Y\subseteq S}g_Y) =\sum_{X\subseteq S}\sum_{Y\subseteq S}f_Xg_Y=\sum_{(X\cup Y)\subseteq S}f_Xg_Y=h^\prime_S \]

\(F^\prime\) 也很好求,初始值令 \(F^\prime=F\) 然后递归求解,设当前序列长度为 \(2^n\)\(\forall x\in[2^{n-1},2^n-1],f^\prime_x \gets f^\prime_x+f^\prime_{x-2^{n-1}}\)

逆变换就是把加法改为减法,证明同理

子集卷积

P6097 【模板】子集卷积

\(h_S=\sum\limits_{X\cup Y\ \text{and}\ X\cap Y=\varnothing}f_Xg_Y\),比普通的或卷积多了一个没有交的条件

暴力算法是 \(O(3^n)\) 枚举每一种元素的状态,无法通过 \(n=20\) 的数据

\(f^\prime_{i,S}=\sum\limits_{X\subseteq S\ \text{and}\ |X|=i}f_X\),对每一个 \(i\in[1,n]\) 做一次 FWT 即可得到,这一步的复杂度为 \(O(2^nn^2)\)

我们发现 \(|X|+|Y|=|S|\ \text{and}\ X\cup Y=S\)\(X\cap Y=\varnothing\ \text{and}\ X\cup Y=S\) 的充分条件,于是:

\[h^\prime_{i,S}=\sum_{P\subseteq S}\sum_{|X|+|Y|=i\ \text{and}\ X\cup Y=P}f_Xg_Y=\sum_{|X|+|Y|=i\ \text{and}\ X\subseteq S\ \text{and}\ Y\subseteq S}f_Xg_Y=\sum_{k=0}^{i}(\sum_{X\subseteq S\ \text{and}\ |X|=k}f_X)(\sum_{Y\subseteq S\ \text{and}\ |Y|=i-k}g_Y)=\sum_{k=0}^{i}f^\prime_{k,S}g^\prime_{i-k,S} \]

这部分复杂度也是 \(O(2^nn^2)\),最后对 \(h^\prime_{i,S}\) 做一遍 IFWT,总复杂度 \(O(2^nn^2)\)

集合幂级数 \(\text{exp}\)

P12230 【模板】集合幂级数 exp

\(G=e^{F}=\sum\limits_{i=0}^{\infty}\frac{F^{i}}{i!}\)\(F^{i}\)\(F\) 与自己做 \(i\) 次子集卷积;特别地,\(F^{0}=1\)

根据定义,我们可以发现 \(F^{i}_S=\sum\limits_{S_1\cup S_2\cup \dots \cup S_i\ \text{and}\ |S_1|+|S_2|+\dots+|S_i|=|S|}\prod\limits_{j=1}^{i}f_{S_j}\)。同样的,我们定义 \(f^\prime_{i,S}=\sum\limits_{X\subseteq S\ \text{and}\ |X|=i}f_X\)

我们枚举 \(S\),有 \(g^{\prime}_i=\sum\limits_{k=0}^{\infty}\frac{1}{k!}\sum\limits_{i_1+i_2+\dots+i_k=i}\prod\limits_{j=1}^{k}f^{\prime}_{i_j,S}\)。这就是 \(F^{\prime}_{i}\) 的多项式 \(\text{exp}\),可以直接 \(O(n^2)\) 递推算

然后就做完了

例题

P13275 [NOI2025] 集合

还不会

P11834 [省选联考 2025] 岁月

还不会

http://www.jsqmd.com/news/646565/

相关文章:

  • 新手也能搞定的微信小程序逆向:用unveilr工具拆解某盾blackbox生成逻辑
  • AI知识管理:Notion模板实战——软件测试从业者的效率革命
  • Windows系统优化实战指南:WinUtil工具箱深度解析与高效应用方案
  • ESP32搭配INMP441麦克风:从接线到串口打印音频数据的保姆级教程
  • OpenHarmony开发必备:巧用DevEco Studio的PCID导入,快速搞定新设备适配
  • 缺省源
  • Windows系统精简优化终极指南:告别臃肿,重获流畅体验
  • Ubuntu Autoinstall Generator:三步快速上手自动化部署工具
  • RBAC机制与角色及绑定关系
  • 【ROS2实战笔记-3】RViz2图形底层与调试暗坑
  • Cesium for Unity 安装避坑指南
  • Go语言的context.WithDeadline截止时间实现与时钟漂移补偿在分布式
  • 避坑指南:在ultralytics YOLO中集成Mamba-2或Vision Mamba时,如何搞定那个烦人的CUDA张量检查报错
  • 2026届最火的五大AI科研神器推荐榜单
  • Halcon实战:5分钟搞定工业视觉直线度检测(附完整代码)
  • 企微获客数据可视化——无工具数据黑盒vs工具化数据追溯的技术实现
  • 单细胞分析实战:sctransform标准化避坑指南(附Seurat代码)
  • MIPI CSI-2 信号完整性实战:从波形抓取到问题定位
  • 2025届最火的十大AI科研神器推荐榜单
  • 【ROS2实战笔记-4】Gazebo:从通信桥接到性能瓶颈相关技术梳理
  • 为什么92.3%的设计团队在3个月内弃用AI助手?奇点大会闭门论坛首曝失败归因矩阵
  • 手把手教你用奥比中光Astra-Mini实现ROS下的3D手势识别(含rviz可视化教程)
  • uniApp深色模式闪白?这5个优化技巧让你的App体验更流畅
  • 读懂加密市场(五):进阶之路
  • 系统架构评审要点
  • 鸿蒙Next应用开发:除了官方SDK,这两种拉起支付宝的野路子你试过吗?
  • Python自动化抢票终极指南:告别手速比拼,轻松搞定热门演出门票
  • 从GUI到CLI:ModelSim仿真效率提升实战,告别图形界面卡顿与配置烦恼
  • 2026奇点大会AI视频生成技术演进路线图:2024Q4→2026Q2关键节点预测(含3家头部厂商未发布模型参数与训练数据规模)
  • 如何通过插件化架构解决Java字节码编辑工具的扩展性难题