Codeforces 662 C. Binary Table
http://codeforces.com/contest/662/problem/C
题意:
n行m列01矩阵,每次可以反转一行或一列,问最后最少可以剩下多少个1
n只有20,把行状态压缩
操作奇数次相当于1次,操作偶数次相当于不操作
所以可以枚举对行的操作,将操作也状态压缩
A[i] 表示有多少列的状态为i
B[i] 表示 状态为i时的最优解,即fanzh
C[i] 表示 操作i的最优解
执行一次行操作相当于给某一列的状态异或上操作的状态
C[opt] = Σ A[state]*B[opt xor state]
(先执行这种行操作,如果某一列发现再执行一次列操作更优,那这一列再执行列操作,这通通包含在B数组里)
目前求C的复杂度为 2^2n
令 res = opt xor state
C[opt] = Σ(state) Σ(res) [state xor res == opt] A[state]*B[res]
C[opt] = Σ(state) Σ(res) [state xor opt == res] A[state]*B[res]
然后就可以用FWT 优化 成2^n * n
这还有个用子集反演的,是什么啊??
http://blog.csdn.net/QWsin/article/details/55054071
#include<cstdio>
#include<algorithm> using namespace std; typedef long long LL; char s[][]; LL a[],b[],c[]; int count(int i)
{
int sum=;
while(i) sum+=i&,i>>=;
return sum;
} void FWT_xor(LL *a,int n)
{
LL x,y;
for(int d=;d<n;d<<=)
for(int m=d<<,i=;i<n;i+=m)
for(int j=;j<d;++j)
{
x=a[i+j]; y=a[i+j+d];
a[i+j]=x+y; a[i+j+d]=x-y;
}
} void IFWT_xor(LL *a,int n)
{
LL x,y;
for(int d=;d<n;d<<=)
for(int m=d<<,i=;i<n;i+=m)
for(int j=;j<d;++j)
{
x=a[i+j]; y=a[i+j+d];
a[i+j]=x+y>>; a[i+j+d]=x-y>>;
}
} int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i) scanf("%s",s[i]+);
int state;
for(int i=;i<=m;++i)
{
state=;
for(int j=;j<=n;++j)
if(s[j][i]=='') state|=<<j-;
++a[state];
}
int S=<<n,sum;
for(int i=;i<S;++i)
{
sum=count(i);
b[i]=min(sum,n-sum);
}
FWT_xor(a,S);
FWT_xor(b,S);
for(int i=;i<S;++i) c[i]=a[i]*b[i];
IFWT_xor(c,S);
LL ans=n*m;
for(int i=;i<S;++i) ans=min(ans,c[i]);
printf("%I64d",ans);
}
Codeforces 662 C. Binary Table的更多相关文章
- CROC 2016 - Final Round [Private, For Onsite Finalists Only] C. Binary Table FWT
C. Binary Table 题目连接: http://codeforces.com/problemset/problem/662/C Description You are given a tab ...
- 【CF662C】Binary Table(FWT)
[CF662C]Binary Table(FWT) 题面 洛谷 CF 翻译: 有一个\(n*m\)的表格(\(n<=20,m<=10^5\)), 每个表格里面有一个\(0/1\), 每次可 ...
- 【CF662C】Binary Table 按位处理
[CF662C]Binary Table 题意:给你一个$n\times m$的01网格,你可以进行任意次操作,每次操作是将一行或一列的数都取反,问你最多可以得到多少个1? $n\le 20,m\le ...
- [CF662C Binary Table][状压+FWT]
CF662C Binary Table 一道 FWT 的板子-比较难想就是了 有一个 \(n\) 行 \(m\) 列的表格,每个元素都是 \(0/1\),每次操作可以选择一行或一列,把 \(0/1\) ...
- CF-1440C2 Binary Table (Hard Version) (构造,模拟)
Binary Table (Hard Version) 题意 \(n*m(2\le n,m\le 100)\) 的01矩阵,每次可以选择一个宽度为2的子矩阵,将四个位置中的任意3个进行翻转,即0变1, ...
- CF662C Binary Table【FWT】
CF662C Binary Table 题意: 给出一个\(n\times m\)的\(01\)矩阵,每次可以反转一行或者一列,问经过若干次反转之后,最少有多少个\(1\) \(n\le 20, m\ ...
- 「CF662C」 Binary Table
「CF662C」 Binary Table 题目链接 题目所给的 \(n\) 很小,于是我们可以考虑这样一种朴素做法:暴力枚举第 \(i\) 行是否翻转,这样每一行的状态就确定了,这时取每一列 \(0 ...
- Codeforces #662C Binary Table
听说这是一道$ Tourist$现场没出的题 Codeforces #662C 题意: 给定$n*m的 01$矩阵,可以任意反转一行/列($0$变$1$,$1$变$0$),求最少$ 1$的数量 $ n ...
- [CodeForces 663E] - Binary Table(FWT)
题目 Codeforces 题目链接 分析 大佬博客,写的很好 本蒟蒻就不赘述了,就是一个看不出来的异或卷积 精髓在于 mask对sta的影响,显然操作后的结果为mask ^ sta AC code ...
随机推荐
- C#_添加xml文件
引用:System.Xml; XmlDocument doc = new XmlDocument(); XmlElement Root = doc.CreateElement("Root&q ...
- 博客配置Racket代码字体
我想在博客园的文章中插入Racket代码,但是博客园的代码块和高亮都太难看了,如果能把scribble/manual的CSS文件中的Racket代码块的配置拿出来就可以有漂亮的Racket代码高亮了, ...
- “Linux内核分析”实验一报告
张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容 ...
- Linux内核分析-两种方式使用同一个系统调用
实验部分 根据系统调用表,选取一个系统调用.我选得是mkdir这个系统调用,其系统调用号为39,即0x27 由于mkdir函数的原型为 int mkdir (const char *filename, ...
- 软工第三次作业 -- 结对之AutoCS1.0
031302331 031302223 一.将初始排课表导入系统数据库 法1:通过jxl解析excel,把数据插入数据库.较简单,预计用时60分钟 我们采取的是 法2(预计用时30分钟):我们使用的是 ...
- ios UnitTest 学习笔记
一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...
- 更新pip10后 ImportError: cannot import name ‘main'
百度了几个回答都没有解决问题,有些回答明显是直接复制过来的一点价值都没有,然后google一下立马解决.很多时候不能怪搜索引擎,问题出在一些国内网友对知识的不负责任 解决:找到报错文件,也就是那个pi ...
- 《Toward an SDN-Enabled Big Data Platform for Social TV Analysis》--2015--Han Hu
<面向应用于社会TV分析的应用了SDN的大数据平台> Abstract social TV analytics 是什么,就是说很多TV观众在微博.微信和推特等这些地方分享他们的观感时,然后 ...
- php排序学习之-冒泡排序
原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面. (以下都是升序排列,即从小到大排列) 举例说明: $arr = array(6, 3, 8, 2, 9, 1); $a ...
- [51CTO]区块链在美国:10个案例、10个问题和5个解决方案
区块链在美国:10个案例.10个问题和5个解决方案 近日,美国国际战略研究中心(CSIS, Center for Strategic and International Studies)发布报告< ...