板子:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = ;
const int MOD = ;
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
int n;
ll inv_2=(MOD+)/;
ll a[(<<N)+],b[(<<N)+],c[(<<N)+];
void Mod(ll&x){if(x>=MOD)x-=MOD;}
void fwt_or(ll *a,int len,int k)
{
for(int i=;i<len;i<<=)
for(int j=;j<len;j+=(i<<))
for(int o=;o<i;o++)
{
if(k==)Mod(a[j+o+i]+=a[j+o]);
else Mod(a[j+o+i]+=-a[j+o]+MOD);
}
}
void fwt_and(ll *a,int len,int k)
{
for(int i=;i<len;i<<=)
for(int j=;j<len;j+=(i<<))
for(int o=;o<i;o++)
{
if(k==)Mod(a[j+o]+=a[j+o+i]);
else Mod(a[j+o]+=-a[j+o+i]+MOD);
}
}
void fwt_xor(ll *a,int len,int k)
{
for(int i=;i<len;i<<=)
for(int j=;j<len;j+=(i<<))
for(int o=;o<i;o++)
{
int w1 = a[j+o],w2 = a[j+o+i];
a[j+o] = (w1+w2)%MOD;
a[j+o+i] = (w1-w2+MOD)%MOD;
if(k==-)a[j+o]=a[j+o]*inv_2%MOD,a[j+o+i]=a[j+o+i]*inv_2%MOD;
}
}
void mul()
{
for(int i=;i<(<<n);i++)
c[i] = a[i]*b[i]%MOD;
}
void print()
{
for(int i=;i<(<<n);i++)
printf("%lld ",c[i]);
puts("");
}
int main()
{
read(n);int len = (<<n);
for(int i=;i<len;i++)
read(a[i]);
for(int i=;i<len;i++)
read(b[i]);
fwt_or(a,len,),fwt_or(b,len,);
mul();
fwt_or(c,len,-);
print();
fwt_or(a,len,-),fwt_or(b,len,-);
fwt_and(a,len,),fwt_and(b,len,);
mul();
fwt_and(c,len,-);
print();
fwt_and(a,len,-),fwt_and(b,len,-);
fwt_xor(a,len,),fwt_xor(b,len,);
mul();
fwt_xor(c,len,-);
print();
fwt_xor(a,len,-),fwt_xor(b,len,-);
return ;
}

FWT板子的更多相关文章

  1. 能轻松背板子的FWT(快速沃尔什变换)

    FWT应用 我不知道\(FWT\)的严格定义 百度百科和维基都不知道给一坨什么****东西** FWT(Fast Walsh Fransform),中文名快速沃尔什变换 然后我也不知道\(FWT\)到 ...

  2. bzoj4589: Hard Nim fwt

    题意:求n个m以内的素数亦或起来为0的方案数 题解:fwt板子题,先预处理素数,把m以内素数加一遍(下标),然后fwt之后快速幂即可,在ifwt之后a[0]就是答案了 /*************** ...

  3. Noip前的大抱佛脚----数论

    目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...

  4. 【51nod】1773 A国的贸易

    题解 FWT板子题 可以发现 \(dp[i][u] = \sum_{i = 0}^{N - 1} dp[i - 1][u xor (2^i)] + dp[i - 1][u]\) 然后如果把异或提出来可 ...

  5. 卷积FFT、NTT、FWT

    先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式. 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值. ...

  6. CF914G Sum the Fibonacci FWT、子集卷积

    传送门 一道良心的练习FWT和子集卷积的板子-- 具体来说就是先把所有满足\(s_a \& s_b = 0\)的\(s_a \mid s_b\)的值用子集卷积算出来,将所有\(s_a \opl ...

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

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

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

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

  9. [学习笔记&教程] 信号, 集合, 多项式, 以及各种卷积性变换 (FFT,NTT,FWT,FMT)

    目录 信号, 集合, 多项式, 以及卷积性变换 卷积 卷积性变换 傅里叶变换与信号 引入: 信号分析 变换的基础: 复数 傅里叶变换 离散傅里叶变换 FFT 与多项式 \(n\) 次单位复根 消去引理 ...

随机推荐

  1. (水题)洛谷 - P1464 - Function

    https://www.luogu.org/problemnew/show/P1464 #include<bits/stdc++.h> using namespace std; #defi ...

  2. [原]Windows下openssl的下载安装和使用

    安装openssl有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.下面对两种方式均进行详细描述. 一.下载和安装openss 方法一:直接使用openssl安装包 W ...

  3. Servlet3.0-使用注解定义过滤器(Filter)

    本人正在学javaweb,遇到了在eclipse中,servlet3.0过滤器需不需要配置web.xml文件?通过实践得出结论,不用配置,只需要@WebFilter(filterName=" ...

  4. jQuery同时监听两个事件---实现同时操控两个按键

    我们都知道因为js是单线程的,所以没有可以同时触发键盘两个事件的方法 今天我们就来做一个可以实现这个功能方法 先来看一下成品图效果 接下来我们来看下具体是怎么实现的 注释写在了代码里面 <!DO ...

  5. C#中,用HashTable,DataTable等复制和克隆浅谈

    如有雷同,不胜荣欣,若转载,请注明 在C#中,用HashTable,DataTable等复制和克隆浅谈,下面直接看例子 HashTable ht = null; ht = new HashTable( ...

  6. spring cloud feign 调用接口报错"No message available

    There was an unexpected error (type=Internal Server Error, status=500). status 404 reading HelloServ ...

  7. 【loj6034】「雅礼集训 2017 Day2」线段游戏

    #6034. 「雅礼集训 2017 Day2」线段游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 题目描述 ...

  8. Subsequence HDU - 3530

    Subsequence HDU - 3530 方法:单调队列区间最大最小 错误记录(本地写错)的原因:写成每次试着扩展右端点,却难以正确地处理"在多扩展右端点之后减去多扩展的部分" ...

  9. ASP.NET Core Action 读取流

    以前mvc5 action可以直接使用 var stream = HttpContext.Current.Request.InputStream; 读取流,在Core中有所不同,可以使用以下方式读取 ...

  10. Hibernate5 与 Spring Boot2 最佳性能实践

    参考 Hibernate5 与 Spring Boot2 最佳性能实践(1) Hibernate5 与 Spring Boot2 最佳性能实践(2) Best Performance Practice ...