FWT学习笔记

好久以前写的,先粘上来

定义数组

\(n=2^k\)
\(A=[a_0,a_1,a_2,a_3,...,a_{n-1}]\)
令\(A_0=[a_0,a_1,a_2,...,a_{\frac n 2-1}]\)
且\(A_1=[a_{\frac n 2},a_{\frac n 2+1},..,a_{n-1}]\)
即\(A_0\)为没有最高位的部分,\(A_1\)为有二进制最高位的部分
\(A\)可以用\(A=\{A_0,A_1\}\)表示

定义运算

\(A+B=[a_0+b_0,a_1+b_1,...,a_n+b_n]=\{A_0+B_0,A_1+B_1\}\)
\(A-B=[a_0-b_0,a_1-b_1,...,a_n-b_n]=\{A_0-B_0,A_1-B_1\}\)
\(A*B=[a_0*b_0,a_1*b_1,...,a_n*b_n]=\{A_0*B_0,A_1*B_1\}\)
\(A xor B=[\sum_{i xor j=0}a_i*a_j,\sum_{i xor j=1}a_i*a_j,...,\sum_{i xor j=n-1}a_i*a_j]\)
\(A and B=[\sum_{i and j=0}a_i*a_j,\sum_{iandj=1}a_i*a_j,...,\sum_{i and j=n-1}a_i*a_j]\)
\(A or B=[\sum_{i or j=0}a_i*a_j,\sum_{i or j=1}a_i*a_j,...,\sum_{i or j=n-1}a_i*a_j]\)

性质1

交换率、结合率均满足
\(Cxor(A+B)=CxorA+CxorB\)
\(Cand(A+B)=CandA+CandB\)
\(Cor(A+B)=CorA+CorB\)

性质2

由于\(n-1\)和\(\frac n 2-1\)在二进制下相差一位的特殊性质
\(AxorB=\{A_0xorB_0\)+\(A_1xorB_1,A_0xorB_1\)+\(A_1xorB_0\}\)
\(AandB=\{A_0andB_0\)+\(A_0andB_1\)+\(A_1andB_0,A_1andB_1\}\)
\(AorB=\{A_0orB_0,A_oorB_1\)+\(A_1orB_0\)+\(A_1orB_1\}\)

定义FWT和IFWT

\(FWT(A)=A(n=1)\)
n>1时
xor:\(FWT(A)=\{FWT(A_0+A_1),FWT(A_0-A_1)\}\)
xor:\(DWT(A)=\{DWT(\frac {A_0+A_1} 2),DWT(\frac {A_0-A_1} 2)\}\)

and:\(FWT(A)=\{FWT(A_0+A_1),FWT(A_1)\}\)
and:\(DWT(A)=\{DWT(A_0-A_1),DWT(A_1)\}\)

or:\(FWT(A)=\{FWT(A_0),FWT(A_1+A_0)\}\)
or:\(DWT(A)=\{DWT(A_0),DWT(A_1-A_0)\}\)

这跟FFT递归树是一个道理的啊
FFT要分奇偶递归树先按最低位为0分两段
到FWT里啥顺序都行,reverse都不用了

性质

1.\(FWT(A\pm B)=FWT(A)\pm FWT(B) 线性性\)
2.\(FWT(A⊕B)=FWT(A)*FWT(B) (点乘)\)
3.\(DWT(FWT(A))=A\)

证明

代入一下再根据性质一化简一下,数学归纳法

模板

链接

FWT 学习笔记的更多相关文章

  1. 一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记

    一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记 曾经某个下午我以为我会了FWT,结果现在一丁点也想不起来了--看来"学"完新东西不经常做题不写博客,就白学了 = = 我没啥智 ...

  2. FWT学习笔记

    FWT学习笔记 引入 一般的多项式乘法是这样子的: \(c_i=\sum_{i,j}a_j*b_k*[j+k==i]\) 但是如果我们将这个乘法式子里面的+号变换一下变成其他的运算符号呢? \(c_i ...

  3. FMT/FWT学习笔记

    目录 FMT/FWT学习笔记 FMT 快速莫比乌斯变换 OR卷积 AND卷积 快速沃尔什变换(FWT/XOR卷积) FMT/FWT学习笔记 FMT/FWT是算法竞赛中求or/and/xor卷积的算法, ...

  4. $\text {FWT}$学习笔记

    \(\text {FWT}\) 学习笔记 正常项的\(\text {FWT}\) 在\(\text {OI}\)中,我们经常会碰到这种问题: 给出一个长度为\(n\)的序列\(a_{1,2,...,n ...

  5. 快速沃尔什变换 (FWT)学习笔记

    证明均来自xht37 的洛谷博客 作用 在 \(OI\) 中,\(FWT\) 是用于解决对下标进行位运算卷积问题的方法. \(c_{i}=\sum_{i=j \oplus k} a_{j} b_{k} ...

  6. 快速沃尔什变换 FWT 学习笔记【多项式】

    〇.前言 之前看到异或就担心是 FWT,然后才开始想别的. 这次学了 FWT 以后,以后判断应该就很快了吧? 参考资料 FWT 详解 知识点 by neither_nor 集训队论文 2015 集合幂 ...

  7. 快速沃尔什变换(FWT)学习笔记 + 洛谷P4717 [模板]

    FWT求解的是一类问题:\( a[i] = \sum\limits_{j\bigoplus k=i}^{} b[j]*c[k] \) 其中,\( \bigoplus \) 可以是 or,and,xor ...

  8. 卷积理论 & 高维FWT学习笔记

    之前做了那么多生成函数和多项式卷积的题目,结果今天才理解了优化卷积算法的实质. 首先我们以二进制FWT or作为最简单的例子入手. 我们发现正的FWT or变换就是求$\hat{a}_j=\sum_{ ...

  9. FWT快速沃尔什变换学习笔记

    FWT快速沃尔什变换学习笔记 1.FWT用来干啥啊 回忆一下多项式的卷积\(C_k=\sum_{i+j=k}A_i*B_j\) 我们可以用\(FFT\)来做. 甚至在一些特殊情况下,我们\(C_k=\ ...

随机推荐

  1. RabbitMQ 学习资料

    https://www.rabbitmq.com/getstarted.html http://www.cnblogs.com/luxiaoxun/p/3918054.html http://back ...

  2. 01_11_Strtus2简单数据验证

    01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...

  3. lua在linxu和windows系统下的遍历目录的方法

    在windows下遍历目录使用lfs库:例如遍历整个目录下的所有文件 local lfs = require "lfs" function findPathName(path)  ...

  4. 【转】MFC编辑框自动换行,垂直滚动条自动下移

    1.新建一个编辑框控件(Edit Control),将其多行(Multiline)前面打勾(属性设置为True),Auto HScroll前面的勾去掉(属性设置False),这样就可以实现每一行填满后 ...

  5. error PRJ0019: 工具从 “正在执行生成后事件... ”

    error PRJ0019: 工具从"正在执行生成后事件..." 原因是属性->生成事件->生成后事件 命令行设置错误导致的,修改即可 因为path前面有空格,所以这里 ...

  6. 转 Spring Security 简介

    https://blog.csdn.net/xlecho/article/details/80026527 Spring Security 简介 2018年04月21日 09:53:02 阅读数:13 ...

  7. python--字符编码理解

    一.字符编码简史: 美国:1963年 ASCII (包含127个字符  占1个字节) 中国:1980年 GB2312 (收录7445个汉字,包括6763个汉字和682个其它符号) 1993年 GB13 ...

  8. 如何使用 HTML5 的picture元素处理响应式图片

    来自: http://www.w3cplus.com/html5/quick-tip-how-to-use-html5-picture-for-responsive-images.html 图片在响应 ...

  9. Thinkphp5 的常用连式查询

    目录 取出表中改字符串前两位等于01的数据 按主键查询 不按主键查 JOIN方法 的左右连接 not in 方法 like 查询 where 按条件筛选查询 取出表中改字符串前两位等于01的数据 $p ...

  10. BZOJ 5442: [Ceoi2018]Global warming

    [l,r]+x不如[l,n]+x [l,r]-x不如(r,n)+x 所以等价于只有[l,n]+x 枚举断点树状数组合并 难度在于想到这个贪心 #include<cstdio> #inclu ...