Codeforces 662C Binary Table 快速沃尔什变换(FWT)
来源:互联网 发布:talking data数据 编辑:程序博客网 时间:2024/06/05 23:57
Description
给定一个
Data Constraint
Solution
考虑把每一列压成
设
上述做法的时间复杂度为
等价于
上述卷积形式用
Code
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#define fo(i,j,l) for(int i=j;i<=l;++i)#define fd(i,j,l) for(int i=j;i>=l;--i)#define min(a,b) ((a)<(b)?(a):b)using namespace std;typedef long long ll;const ll N=4e6;int a[N],n,m,j,k,l,i,o,p;ll aa[N],bb[N],cc[N];int qz(int o){ int yy=0; for(;o;o>>=1)yy+=(o&1); return min(n-yy,yy);}void DWT(long long *a,int n){ ll k=0; for(int m=2;m<=n;m<<=1) { int half=m/2; for(i=0;i<n-1;i+=m) fo(l,i,i+half-1){ k=a[l+half]; a[l+half]=a[l]-k; a[l]=a[l]+k; } }}void UNDWT(long long *a,int n){ ll k=0; for(int m=2;m<=n;m<<=1){ int half=m/2; for(int i=0;i<n-1;i+=m) fo(l,i,i+half-1){ k=a[l+half]; a[l+half]=(a[l]-k)/2; a[l]=(a[l]+k)/2; } }}void FWT(long long *a,long long *b,long long *c,int len){ DWT(a,len); DWT(b,len); fo(i,0,len-1)c[i]=a[i]*b[i]; UNDWT(c,len);}int main(){ cin>>n>>m; char k=getchar(); fo(i,1,n){ fo(l,1,m)a[l]=(a[l]<<1)+(getchar()-48); char k=getchar(); } fo(i,1,m)++aa[a[i]]; p=1<<n; fo(i,0,p-1)bb[i]=qz(i); FWT(aa,bb,cc,p); ll ans=(ll)m*(ll)m*(ll)n; fo(i,0,p-1) ans=min(ans,cc[i]); printf("%I64d",ans);}
阅读全文
1 0
- Codeforces 662C Binary Table 快速沃尔什变换(FWT)
- Codeforces 662C Binary Table FWT 快速沃尔什变换
- 快速沃尔什变换FWT
- CodeForces 663E - Binary Table FWT
- [FWT] Codeforces 663E. Binary Table
- [FWT] Codeforces663E .Binary Table
- [ FWT ] Codeforces663E Binary Table
- [FWT] 快速沃尔什变换学习笔记
- FWT——快速沃尔什变换
- 快速沃尔什变换(FWT) 学习笔记
- 快速沃尔什变换详解(FWT)
- 文章标题 FWT (快速沃尔什变换) 模板
- 快速沃尔什变换(FWT)讲解 解决集合卷积的方法
- CSU 1911 Card Game 快速沃尔什变换(FWT)模板题
- 快速沃尔什变换(FWT)讲解 解决集合卷积的方法
- cf 662C Binary Table
- 快速沃尔什变化(FWT)介绍
- 【CODEFORCES】 C. Table Decorations
- 733. Flood Fill
- C++使用getline读取string
- 浙大版《C语言程序设计(第3版)》题目集(函数题)练习5-3
- 面向对象:希望遇到对的他,余生一起多多指教
- 前端动画大乱炖
- Codeforces 662C Binary Table 快速沃尔什变换(FWT)
- 用邻接表存储有向图实现的dfs和bfs
- SVG 新司机开车指南
- contos7 使用yum快速 搭建lnmp 环境
- 软件调试笔记21
- Linux文件管理
- HDOJCuts the cake
- 【全网首发】Tomcat配置“X-Frame-Options头未设置”警告的过滤器(详细)
- c 语言 从字符串中取出一串单词并倒序