CSU 1911 Card Game 快速沃尔什变换(FWT)模板题
来源:互联网 发布:敏捷网络的五个理念 编辑:程序博客网 时间:2024/06/05 14:11
题意:给你两个二进制数的集合,给出q次询问,输出两个集合之间元素或的值等于查询值的种数。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;#define LL long longconst int maxn = 1<<18;LL a[maxn],b[maxn];int n,m;char s[20];void FWT(LL a[],int n){ for(int d=1;d<n;d<<=1) for(int m=d<<1,i=0;i<n;i+=m) for(int j=0;j<d;j++) { int x=a[i+j],y=a[i+j+d]; a[i+j+d]=x+y; }}void UFWT(LL a[],int n){ for(int d=1;d<n;d<<=1) for(int m=d<<1,i=0;i<n;i+=m) for(int j=0;j<d;j++) { int x=a[i+j],y=a[i+j+d]; a[i+j+d]=y-x; }}void solve(LL a[],LL b[],int n){ FWT(a,n); FWT(b,n); for(int i=0;i<n;i++) a[i]=a[i]*b[i]; UFWT(a,n);}int main(){ int t,q; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { memset(a,0,sizeof a); memset(b,0,sizeof b); scanf("%d%d",&n,&m); int l,x; for(int i=0;i<n;i++) { x=0; scanf("%s",s); l=strlen(s); for(int j=0;j<l;j++) x=(x<<1)+s[j]-'0'; a[x]++; } for(int i=0;i<n;i++) { x=0; scanf("%s",s); l=strlen(s); for(int j=0;j<l;j++) x=(x<<1)+s[j]-'0'; b[x]++; } solve(a,b,(1<<m)); scanf("%d",&q); printf("Case #%d:\n",cas); while(q--) { scanf("%s",s); x=0; l=strlen(s); for(int i=0;i<l;i++) x=(x<<1)+s[i]-'0'; printf("%lld\n",a[x]); } } return 0;}
0 0
- CSU 1911 Card Game 快速沃尔什变换(FWT)模板题
- 文章标题 FWT (快速沃尔什变换) 模板
- 快速沃尔什变换FWT
- 快速沃尔什变换详解(FWT)
- [FWT] 快速沃尔什变换学习笔记
- FWT——快速沃尔什变换
- 快速沃尔什变换(FWT) 学习笔记
- 快速沃尔什变换(FWT)讲解 解决集合卷积的方法
- 快速沃尔什变换(FWT)讲解 解决集合卷积的方法
- Codeforces 662C Binary Table 快速沃尔什变换(FWT)
- Codeforces 662C Binary Table FWT 快速沃尔什变换
- 快速沃尔什变化(FWT)介绍
- FWT 模板
- FWT模板
- F(1911)Card Game
- hdoj Card Game 5494 ()简单题
- 快速傅立叶变换 模板
- Pick Picknic (card game)
- Connecticut Medal of Science goes to Yale’s Robert Schoelkopf
- memcached-3-memcached的删除机制和发展方向
- Java并发笔记一
- 获取文件夹下所有子文件夹名
- mysql连接中出现的一些问题以及解决方法
- CSU 1911 Card Game 快速沃尔什变换(FWT)模板题
- memcached-4-memcached的分布式算法
- Linux服务器中直接执行sql文件
- 【day-13】KMP完整版+升级版
- C++ 判断点是否在一个面内
- Servlet容器Tomcat中web.xml中url-pattern的配置详解[附带源码分析]
- POJ-3660-Cow Contest
- memcached-5-memcached的应用和兼容程序
- hibernate jpa Table "xxxx" cannot be resolved