FWT 模板

来源:互联网 发布:软件层次结构图 编辑:程序博客网 时间:2024/06/10 11:57

传送门

传送门:FWT知识点详解
传送门:Pick’s Blog

(我用的板子都是非递归的QAQ,可能是非递归的FFT写的比较顺手吧)

&运算

void Fast_Walsh_Hadamard_Transform(LL x[],int len,int mode)//&运算{    for(int i=2;i<=len;i<<=1)    {        int step=i>>1;        for(int j=0;j<len;j+=i)            for(int k=j;k<j+step;k++)                a[k+step]+=a[k]*mode;    }}

|运算

void Fast_Walsh_Hadamard_Transform(LL x[],int len,int mode){    for(int i=2;i<=len;i<<=1)    {        int step=i>>1;        for(int j=0;j<len;j+=i)            for(int k=j;k<j+step;k++)                a[k]+=a[k+step]*mode;    }}

^运算

void Fast_Walsh_Hadamard_Transform(LL x[],int len,int mode){    for(int i=2;i<=len;i<<=1)    {        int step=i>>1;        for(int j=0;j<len;j+=i)            for(int k=j;k<j+step;k++)            {                LL a=x[k],b=x[k+step];                x[k]=(a+b)%mod;                x[k+step]=(a-b+mod)%mod;                if(mode==-1) (x[k]*=ni)%=mod,(x[k+step]*=ni)%=mod;            }    }}
0 0
原创粉丝点击