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. 剑指offer题目分类

    1. 链表 1. 从尾到头打印链表 2. 链表中倒数第k个结点 3. 反转链表 4. 合并两个排序的链表 5. 复杂链表的复制 6. 复杂链表的复制 7. 两个链表的第一个公共结点 8. 链表中环的入 ...

  2. Visual Studio 2017 UTF-8 无 BOM 一站式解决办法

    问题背景:最近捡起C++,使用VS 2017平台.因为以前的编程习惯,喜欢使用UTF-8 无 BOM 的编码格式,好让自己的代码全球通用.但是VS 2017 对这个问题不是很友善.但最终找到了解决办法 ...

  3. PAT 乙级 1077

    题目 题目地址:PAT 乙级 1077 题解 本题没什么难度,但是要注意细节问题,下面简单来说一下: vector 把输入的学生打分存起来,直接用算法库中的 sort 函数给它们排个序,之后直接剔除首 ...

  4. zabbix3.2安装手册

    Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持. Zabbix是一个企业级的.开源的.分布式的监控套件 Zabbix可以监控网络和服务的监控 ...

  5. Unity基础-脚本的加载与编译顺序

    脚本的加载与编译顺序 C#是以Assembly(汇编集)为一个基本单元组织代码的,dll就是一个assembly,dll之间有加载以来顺序 Assets/*.dll Stamdard Assets/* ...

  6. Linux-CentOS6.9启动流程排错

    1 . CentOS6.9启动流程 POST 加电自检,是BIOS功能的一个主要部分.负责完成对CPU.主板.内存.硬盘子系统.显示子系统.串并行接口.键盘.CD-ROM光驱等硬件情况的检测. Boo ...

  7. Thinkphp5 的常用连式查询

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

  8. day14-推导式和生成器表达式

    1.推导式规则 [每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型] ----------遍历之后挨个处理[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素 ...

  9. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?

    目录 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深? 简介 功能截图 如何运行 编写思路 main.py模块 qq_bot模块 tkinter_gui模块 static_data模 ...

  10. CSS(非布局样式)

    CSS(非布局样式) 问题1.CSS样式(选择器)的优先级 1.计算权重 2.!important 3.内联样式比外嵌样式高 4.后写的优先级高 问题2.雪碧图的作用 1.减少 HTTP 请求数,提高 ...