UVa 11464 - Even Parity
解题报告:题目大意有一个N×N的矩阵,矩阵中的元素只有1或0,如果说对于一个矩阵,它的所有的点的上下左右的点的和是偶数,则称这个矩阵为偶数矩阵,现在给你一个任意的矩阵,要求的是如果要把这个矩阵变成偶数矩阵的话,最少需要将多少个点由1变成0,若不存在话,输出-1.(N<=15)
这题如果枚举每个点的情况的话,虽然N最大只有15,但这样枚举的计算量依然非常大。但是我们可以发现,如果知道第一行的每一个点是什么样的,完全可以计算出下面的N-1行的每一个点。这样我们只要枚举第一行的每一个点的情况,这样的话时间复杂度就降为2^15,很明显快多了。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int xxx[]={,-,,,};
int yyy[]={,,,,-};
const int MAX=0xffffff;
int n,mep[][];
int check(int s) {
int mp[],map[][],tot=;
memset(mp,,sizeof(mp));
memset(map,,sizeof(map));
for(int i=;i<n;++i)
if(s & (<<i)) {
if(mep[][i+]==)
tot++;
mp[i+]=;
}
else if(mep[][i+]==)
return MAX;
for(int i=;i<=n;++i)
map[][i]=mp[i];
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
map[i][j]=mep[i][j]; for(int i=;i<=n;++i)
for(int j=;j<=n;++j) {
int sum=;
for(int k=;k<=;++k) {
int xx=i+xxx[k];
int yy=j+yyy[k];
if(xx<=||yy<=||xx>n||yy>n)
continue;
sum+=map[xx][yy];
}
if(sum%) {
if(i!=n&&map[i+][j]==) {
map[i+][j]=;
tot++;
}
else return MAX;
}
}
return tot;
} int main( ) {
int T;
scanf("%d",&T);
for(int l=;l<=T;++l) {
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
scanf("%d",&mep[i][j]);
int ans=MAX;
for(int s = ;s < ( << n ) ; ++s) //(1 << n )注意这个范围不能大也不能小
ans=min(check(s),ans);
if(ans==MAX)
ans=-;
printf("Case %d: %d\n",l,ans);
}
return ;
}
UVa 11464 - Even Parity的更多相关文章
- UVA.11464 Even Parity (思维题 开关问题)
UVA.11464 Even Parity (思维题 开关问题) 题目大意 给出一个n*n的01方格,现在要求将其中的一些0转换为1,使得每个方格的上下左右格子的数字和为偶数(如果存在的话),求使得最 ...
- 状态压缩+枚举 UVA 11464 Even Parity
题目传送门 /* 题意:求最少改变多少个0成1,使得每一个元素四周的和为偶数 状态压缩+枚举:枚举第一行的所有可能(1<<n),下一行完全能够由上一行递推出来,b数组保存该位置需要填什么 ...
- UVA 11464 Even Parity(递归枚举)
11464 - Even Parity Time limit: 3.000 seconds We have a grid of size N x N. Each cell of the grid in ...
- UVA 11464 Even Parity(部分枚举 递推)
Even Parity We have a grid of size N x N. Each cell of the grid initially contains a zero(0) or a on ...
- UVA 11464 - Even Parity(枚举方法)
D Even Parity Input: Standard Input Output: Standard Output We have a grid of size N x N. Each cell ...
- UVA 11464 - Even Parity 状态压缩,分析 难度: 2
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- 【转载】UVa 11464 Even Parity 偶数矩阵
题意:给你一个n*n的01矩阵,让你把这个矩阵中尽量少的0转换成1,使得矩阵每个位置的上下左右四个相邻的数加起来能被2整除,求最少的转换数 首先,n 的规模并不大,最大只有15.但是完全枚举整个矩阵显 ...
- UVa 11464 Even Parity 偶数矩阵
给你一个 n * n 的 01 矩阵,现在你的任务是将这个矩阵中尽量少的 0 转化为 1 ,使得每个数的上下左右四个相邻的数加起来是偶数.求最少的转化个数. 首先,n 的规模并不大,最大只有15.但是 ...
- UVa 11464 Even Parity (二进制法枚举)
题意:给你一个n*n的01矩阵,让你把最少的0变成1,使得每个元素的上,下,左,右的元素(如果有的话)之和均为偶数. 析:最好想的的办法就是暴力,就是枚举每个数字是变还是不变,但是...时间复杂度也太 ...
随机推荐
- 从走出校门到Java实习生生活
序 男,95年,这个学期就大四了,非计算机专业(数字媒体).目前在二线城市做Java实习生,待遇一般,应该算一个正常的实习生水平吧:租的一个约10平米的小单间,实习工资-衣食住行-杂七杂八的小消费差不 ...
- Journey Of Code组组员贡献率
628是该组的组长,前期的主要任务是数据库的设计,中后期加入实现功能模块的工作,实现了文件的上传和解析excel表格的功能,负责协调组员之间的工作和沟通,并且也是最后上台进行演示的人员:所以贡献率有3 ...
- 第四次个人作业——关于微软必应词典android客户端的案例分析
[前言] 第一次搞测评这种东西,如果有什么疏漏,请多多谅解.测评内容如题. 第一部分 调研,评测 评测:(设备:Lenovo A806) 软件的bug,功能评测,黑箱测试 bug等级划分方式 5级分类 ...
- 拦路虎:jQuery
1. color设置无效的问题! $("#subscribe").hover(function(){ var $this = $("#subscribe .subsc ...
- Sublime Text 3 绝对神器
距第一篇的开箱水文,已经有4个月的时间了,但因为懒,就没有下文了.终于,今天,我觉得写一篇准技术文章了. 忘记了是怎么开始用的ST,应该是在网上看到别人推荐才用到吧,用了有半年了.在windows下是 ...
- 【BZOJ 3282】Tree Link Cut Tree模板题
知道了为什么要换根(changeroot),access后为什么有时要splay,以及LCT的其他操作,算是比较全面的啦吧,,, 现在才知道这些,,,真心弱,,, #include<cstdio ...
- 使用NHibernate实现存储库
ORM框架不是存储库.存储库是一种架构模式,而ORM是将数据模型表示成对象模型的一种手段. 存储库可以使用ORM来协助充当领域模型和数据模型之间的中介. NHibernate允许在不损坏或只少量损坏领 ...
- Tomcat 部署
<CATALINA_HOME>/webapps: Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录. 1.war包部署: 将需要发布的web应用打成war文件, ( ...
- Yii2.0 对数据库 查询的简单操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- RequestMethod 相关
Http协议的Delete和Put方法是做什么的?怎么用? RequestMethod 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 一般来说,Web服务器默认的只支持Pos ...