codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
给出一个n*m的01矩阵, 让你最多改变k个里面的值(0变1,1变0), 使得0、1的连通分量是矩阵。输出最少步数
1 ≤ n, m ≤ 100; 1 ≤ k ≤ 10
题解:
如果01连通分量是矩形,
那么矩形一定是这样的:
0101010
1010101
0101010
1010101
(上面的01代表子矩阵块)。
也就是每一行要么是相同,要么是相反的。
如果n>k, 肯定有一行是不能改变的,那么枚举这一行,然后其余的要么变相同,要么变相反,看最少的步数。
如果n<k ,那么可以枚举第一列的状态(2^k), 然后其余列变成和第一列相同或者相反。
//我不知道我这种模拟算不算是状态压缩
#include <cstdio>
#include<iostream>
#include <cstring>
#include <algorithm>
#include<vector>
using namespace std;
int k,n,m;
int a[][]; int min(int x,int y)
{
if(x<y)return x;
return y;
} int meijuh()
{
int minn=;
for(int i=;i<k+;i++)
{
int ans=;
for(int ii=;ii<n;ii++)
{
if(i!=ii)
{
int sa=,di=;
for(int j=;j<m;j++)
{
if(a[i][j]==a[ii][j])
sa++;
else
di++;
}
ans+=min(sa,di);
}
}
minn=min(minn,ans);
}
return minn;
}
int meijul()
{
int er[][];
for(int i=;i<;i++)er[i][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&;
for(int i=;i<;i++)for(int j=;j<;j++)er[i*+j][]=i&; int minn=;
for(int i=;i<(<<n);i++)
{
int ans=;
for(int j=;j<m;j++)
{
int sa=,di=;
for(int ii=;ii<n;ii++)
{
if(er[i][ii]==a[ii][j])
sa++;
else di++;
}
ans=ans+min(sa,di);
}
minn=min(minn,ans);
}
return minn;
} int main() { cin >>n>>m>>k;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
cin >>a[i][j];
int minn=;
if(n>k)
{
minn = meijuh();
}
else
{
minn=meijul();
}
if(minn<=k)
cout << minn<<endl;
else
cout <<-<<endl;
return ;
}
codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)的更多相关文章
- codeforces 425B Sereja and Table (枚举、位图)
输入n*m的01矩阵.以及k. n,m<=100,k<=10 问修改至多k个,使得矩阵内的各连通块(连着的0或1构成连通块)都是矩形,且不含另外的数字(边界为0(1)的矩形内不含1(0)) ...
- [CodeForces 11D] A Simple Task - 状态压缩入门
状态压缩/Bitmask 在动态规划问题中,我们会遇到需要记录一个节点是否被占用/是否到达过的情况.而对于一个节点数有多个甚至十几个的问题,开一个巨型的[0/1]数组显然不现实.于是就引入了状态压缩, ...
- Codeforces 580D Kefa and Dishes(状态压缩DP)
题目链接:http://codeforces.com/problemset/problem/580/D 题目大意:有n盘菜每个菜都有一个满意度,k个规则,每个规则由x y c组成,表示如果再y之前吃x ...
- Codeforces 1383F - Special Edges(状态压缩+最大流)
Codeforces 题目传送门 & 洛谷题目传送门 首先暴力显然是不行的,如果你暴力最大流过了我请你吃糖 注意到本题的 \(k\) 很小,考虑以此为突破口解题.根据最大流等于最小割定理,点 ...
- CodeForces 380C Sereja and Brackets(扫描线+树状数组)
[题目链接] http://codeforces.com/problemset/problem/380/C [题目大意] 给出一个括号序列,求区间内左右括号匹配的个数. [题解] 我们发现对于每个右括 ...
- Codeforces Round #235 (Div. 2) D. Roman and Numbers (数位dp、状态压缩)
D. Roman and Numbers time limit per test 4 seconds memory limit per test 512 megabytes input standar ...
- Codeforces C. A Simple Task(状态压缩dp)
题目描述: A Simple Task time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- codeforces B - Preparing Olympiad(dfs或者状态压缩枚举)
B. Preparing Olympiad You have n problems. You have estimated the difficulty of the i-th one as inte ...
- codeforces 713A A. Sonya and Queries(状态压缩)
题目链接: A. Sonya and Queries time limit per test 1 second memory limit per test 256 megabytes input st ...
随机推荐
- Ruby on Rail学习笔记
说明:只针对Windows8.1 Windows下,上rubyinstaller上下载最新的railsinstaller包含Ruby2.1的,然后更新gem 用命令: gem update --sys ...
- ThinkPHP目录结构
ThinkPHP框架目录结构 文件路径 文件描述 \index.php 入口文件 \Application 应用目录 \Public 资源文件目录 \ThinkPHP 框架核心目录 \Applic ...
- DB2测试存储过程的原子性
存储过程在运行过程中需要对其做异常处理.原子性等测试 下面是一个原子性测试案例 ===================================== 代码区域 ================= ...
- 在.net程序中使用System.Net.Mail来发送邮件
System.Net.Mail是微软自家提供的工具,在.net程序中可以使用该空间中的SmtpClient实例来实现邮件的发送. 使用System.Net.Mail空间与Web.config配置相配合 ...
- mysql substring_index
select * from tablename where substring_index(field1,'_',-1)=‘abc' #表中field1的值结构为123_abc
- ExtJS MVC 学习手记3
在演示应用中,我们已经创建好了viewport,并为之添加了一个菜单树.但也仅仅是这样,点击树或应用的其他地方获得不到任何响应.这个演示应用还是一个死的应用. 接下来,我们让这个应用活起来. 首先,给 ...
- centos6.3编译安装Apache2.4.3+PHP5.4.8+Mysql5.5.8
以虚拟机VirtualBox 版本是4.1.20(内存设置为512M,centos安装是文本模式下安装),全新以最小化包安装了32位的 CentOS6.3系统,作为本地web环境,上次讲了在windo ...
- [转]Win7 UAC的安全、兼容及权限
[转]Win7 UAC的安全.兼容及权限 http://www.cnblogs.com/mydomain/archive/2010/11/24/1887132.html 网上关于这个问题讨论较多,但也 ...
- visualgo 数据结构与算法可视化工具
推荐可视化数据结构与算法工具 http://zh.visualgo.net/
- responsive menu
http://responsive-nav.com/#instructions https://github.com/viljamis/responsive-nav.js http://tympanu ...