zoukankan      html  css  js  c++  java
  • fwt原理学习和一些拓展

    好久没有用过博客了

    以前做fwt,fft的题都是套板子  这里补一下原理

    FWT:

    与运算:

    结论:$FWT(A)_i=sum_{i&j=i}^{}A_j$

    $FWT(C)_i=FWT(A)_i*FWT(B)_i=(sum_{i&j=i}^{}A_j)(sum_{i&k=i}^{}B_k)=sum_{i&j&k=i}^{}A_jB_k$

    求解这个式子我们考虑分治

    将序列补全为长度为$2^n$,另前半部分为$A_0$(即首位为0),后半部分为$A_1$(即首位为1)

    容易得到

    $FWT(A)=(FWT(A_0)+FWT(A_1),FWT(A_1))$

    这样就可以$nlogn$得到

    反演也很容易得到

    $IFWT(A)=(IFWT(A_0)-IFWT(A_1),IFWT(A_1))$

    或运算:

    结论:$FWT(A)_i=sum_{i|j=i}^{}A_j$

    ​$FWT(C)_i=FWT(A)_i*FWT(B)_i=(sum_{i|j=i}^{}A_j)(sum_{i|k=i}^{}B_k)=sum_{i|j|k=i}^{}A_jB_k$

    $FWT(A)=(FWT(A_0),FWT(A_1)+FWT(A_0))$

    $IFWT(A)=(FWT(A_0),FWT(A_1)-FWT(A_0))$

    异或运算:

    这个运算和前两种略有不同

    设p(x)表示x这个数二进制意义下的1的个数,

    结论:$FWT(A)_i=sum_{(i&j)\%2=0}^{}A_j-sum_{(i&j)\%2=1}^{}A_j$

    证件见https://blog.csdn.net/huangzihaoal/article/details/112443162

    $FWT(A)=(FWT(A_0)+FWT(A_1),FWT(A_0)-FWT(A_1))$

    $IFWT(A)=((FWT(A_1)+FWT(A_0))/2,(FWT(A_1)-FWT(A_0))/2)$

  • 相关阅读:
    linux下yum无法使用
    判断某个网卡是否是dhcp获取的ip
    个人作业---词频统计
    第四周读书笔记
    设计关键词
    好文收藏
    Apritag角点代码检测
    处理txt文件,保存为yml和cal文件
    欧拉角欧拉矩阵
    Mysql笔记01-安装和SQL基础
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/14576239.html
Copyright © 2011-2022 走看看