这篇文章在讲什么

  相信大家都会FWT和FMT。

  如果你不会,推荐你去看一下VFK的2015国家集训队论文。

  设全集为\(U=\{1,2,\ldots,n\}\),假设我们关心的\(f_S\)中的集合\(S\)是\(U\)的子集。

  给你\(c_i,d_i\),令
\[
b_i=(1+c_ix^{d_i})
\]

  求
\[
g=\prod_{i}b_i
\]
  其中两个集合幂级数的乘积为集合并卷积(or)/集合对称差卷积(xor)中的一种。

  不妨设\(d_S\)互不相同(否则可以用DP/组合数什么的搞一下)。

  令
\[
\begin{align}
a_S&=\sum_{d_i=S}c_i\\
f_S&=1+a_Sx^S
\end{align}
\]

暴力做法

  对于每一个集合幂级数暴力做一遍FMT/FWT,然后直接乘在一起,再变换回去。

  时间复杂度:\(O(n4^n)\)

  这个做法太慢了,因为它没有用到本题的特殊条件。

集合或卷积

  对于一个集合幂级数\(f\),定义\(f\)的莫比乌斯变换为集合幂级数\(\hat f\),其中
\[
\begin{align}
\hat f_S=\sum_{T\subseteq S}f_T
\end{align}
\]
  反过来,定义\(\hat f\)的莫比乌斯反演为\(f\),由容斥原理可以得到
\[
f_S=\sum_{T\subseteq S}{(-1)}^{|S|-|T|}\hat f_T
\]
  相信大家都熟悉以上内容。

  回到我们要求的那条式子:
\[
\begin{align}
\hat g_T&=\prod_S \hat{f_{S}}_T\\
&=\prod_S \sum_{K\subseteq T}f_{S,K}\\
&=\prod_{S\subseteq T}{(1+a_S)}
\end{align}
\]
  是不是发现和普通的莫比乌斯变换很像?

  把所有\(a_S\)加上\(1\),把莫比乌斯变换的加法改成乘法,就可以得到\(\hat g_T\)了。

  时间复杂度:\(O(n2^n)\)

集合对称差卷积

  还是要用到那几条式子。
\[
\begin{align}
\hat g_T&=\prod_S\hat {f_S}_T\\
&=\prod_S\sum_{K}f_{S,K}{(-1)}^{|K\cap T|}\\
&=\prod_S(1+a_S{(-1)}^{|S\cap T|})
\end{align}
\]
  这个和沃尔什变换也很像,但是\({(-1)}^{|S\cap T|}\)只乘在了\(a_S\)上面,所以不能把\(a_S\)加\(1\)后做变种沃尔什变换。

  但是我们可以再维护一个\(\hat h_T=\prod_S(1-a_S{(-1)}^{|S\cap T|})\),把沃尔什变换中的\(-\hat g_T\)全部换成\(\hat h_T\),就可以做了。

  时间复杂度:\(O(n2^n)\)

代码

  先坑着

  (http://uoj.ac/submission/236983)

最新文章

  1. 20145318 GDB调试汇编堆栈分析
  2. IOS UIImage 模糊
  3. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系
  4. [LeetCode66]Plus One
  5. 排序(4)---------希尔(shell)排序(C语言实现)
  6. OpenCV4Android背景建模(MOG、MOG2)
  7. Android传感器概述-android学习之旅(七)
  8. PBRT笔记(4)——颜色和辐射度
  9. 软件151 王楚博 aodp
  10. goroutine 知识点
  11. RDMA RC UC UD
  12. Executors创建的4种线程池的使用
  13. MVC的Membership
  14. 求[1,n]中与m互素的个数
  15. how2j网站前端项目——天猫前端(第一次)学习笔记2
  16. 消息队列之RabbitMQ的.Net客户端EasyNetQ
  17. opencv 中出现错误 -215:Assertion failed
  18. ajax的post请求方式
  19. Gym - 101498G(Super Subarray )
  20. Java环境搭建与配置、以及Tomcat搭建与配置

热门文章

  1. Open Live Writer安装教程
  2. XT535
  3. 福州大学软件工程1816 | W班 第4次作业(团队展示)成绩排名
  4. 福州大学软件工程1816 | W班 第10次作业[软件工程实践总结]
  5. Memcached 集群架构与memcached-session-manager
  6. js-跨域源资源共享(CORS)
  7. bnu——GCD SUM (莫比乌斯反演)
  8. 你不知道的JavaScript——第一章:作用域是什么?
  9. Dart语法基础
  10. Linux 的相关操作