FWT

简介

  • 大概是解决形如要求 ci=jk=iAjBk

  • 这个符号可以是 或,与,异或

  • 整个的流程和 FFT 很像,先正变换成 FWT(A),FWT(B) ,然后将两者相乘,最后再逆变换

  • 具体的证明和定义和一些繁杂的过程这里就不说了,直接上结论

  • 因为我们是形如 FFT 的分治运算,所以也是有规律才能分治

  • 这里直接给出这个规律

原文章

所有的正变化时, FWT(A)=A,[n=0] ,默认长度为 2nA0 为序列 A 的左半部分 ,A1 为右半部分,(A,B) 表示将两个序列接起来

或运算

FWT(A)=(FWT(A0),typeFWT(A0)+FWT(A1))

  • 正变化的时候 type=1,否则为 1
  • 正变化 FWT(A)[i]=j|iAj

与运算

FWT(A)=(FWT(A0)+typeFWT(A1),FWT(A1))

  • 正变化时 type=1 ,否则为 1

  • 正变化 FWT(A)[i]=i|jAj

异或运算

FWT(A)=(FWT(A0)+FWT(A1),FWT(A0)FWT(A1))

  • 正变化
  • 正变化 FWT(A)[i]=j=02n1(1)c(i&j)A[j]
  • c(x) 表示 x 二进制下 1 的个数

FWT(A)=(FWT(A0)+FWT(A1)2,FWT(A0)FWT(A1)2)

  • 逆变化

LG 模板题

参考代码

posted @   Kzos_017  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示