[FWT] Codeforces663E .Binary Table
来源:互联网 发布:关于股票信息软件 编辑:程序博客网 时间:2024/06/06 17:27
套路题
VP的时候发现这题过的人很多…
把每一列状压,每一列就可以表示成小于
令
那么答案就是
这就是个FWT的形式
直接搞就好了
#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <vector>#include <set>#include <queue>#include <assert.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void rea(int &x){ char c=nc(); x=0; for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());}typedef long long ll;const int N=100010,P=1e9+7,INV2=P+1>>1;int n,m;int cou[1048579];int a[N];int base;inline int RAND(){ static int x=31253125; return (x+=(x<<15)+x)&base;}char C[N];int c[1048579];inline void FWT(int *a,int n,int r){ for(int i=1;i<n;i<<=1) for(int j=0;j<n;j+=(i<<1)) for(int k=0;k<i;k++){ int x=a[j+k],y=a[j+k+i]; if(r) a[j+k]=(x+y)%P,a[j+k+i]=(x+P-y)%P; else a[j+k]=1LL*(x+y)*INV2%P,a[j+k+i]=1LL*(x+P-y)*INV2%P; }}int main(){ scanf("%d%d",&n,&m); base=(1<<n)-1; int NN=1<<n; for(int i=0;i<=base;i++){ int cnt1=0,cnt0=0; for(int j=1;j<=n;j++) if((i>>j-1)&1) cnt1++; else cnt0++; cou[i]=min(cnt1,cnt0); } for(int i=1;i<=n;i++){ scanf("%s",C+1); for(int j=1;j<=m;j++) a[j]=a[j]*2+C[j]-'0'; } for(int i=1;i<=m;i++) c[a[i]]++; FWT(c,NN,1); FWT(cou,NN,1); for(int i=0;i<NN;i++) c[i]=1LL*c[i]*cou[i]%P; FWT(c,NN,0); int ans=n*m; for(int i=0;i<NN;i++) ans=min(ans,c[i]); printf("%d\n",ans); return 0;}
阅读全文
1 0
- [FWT] Codeforces663E .Binary Table
- [ FWT ] Codeforces663E Binary Table
- fwt_xor Codeforces663E Binary Table
- CodeForces 663E - Binary Table FWT
- [FWT] Codeforces 663E. Binary Table
- Codeforces 662C Binary Table 快速沃尔什变换(FWT)
- Codeforces 662C Binary Table FWT 快速沃尔什变换
- FWT
- FWT
- FWT总结
- FWT 模板
- FWT板子
- bzoj4589 FWT
- fwt模版
- FWT模板
- FWT 笔记
- read table ..... binary search问题
- cf 662C Binary Table
- 导入Mongodb数据到Hive方法二
- 关于间接层
- Java学习之Iterator(迭代器)的一般用法
- Spring Aop学习
- opencv读图像C语言实现canny边缘检测
- [FWT] Codeforces663E .Binary Table
- sql server 2000安装图解
- 机器学习---浅谈神经网络
- flume之kafka source
- Math ceil()、floor()、round()方法
- Parcelable接口和用法
- Swing中分割面板JSplitPane的使用
- 作为前端Web开发者,这12个终端命令不可不会
- 玩转Linux系统-elasticsearch搭建