题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2459

题意:给个n*n的01矩阵,可以修改其中的0变成1,问最少修改几个0可以让所有位置中的上下左右的数字和为偶数。

枚举第一行,第二行可以递推得到,所以只需要2^n枚举,外加n*n的判断。

 #include <bits/stdc++.h>
using namespace std; const int maxn = ;
int a[maxn][maxn], b[maxn][maxn];
int n;
int ret; int main() {
// freopen("in", "r", stdin);
int T, _ = ;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
ret = 0x7f7f7f;
for(int i = ; i < n; i++) {
for(int j = ; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
int nn = << n;
for(int i = ; i < nn; i++) {
memset(b, , sizeof(b));
bool flag = ;
for(int j = ; j < n; j++) {
if(i & ( << j)) b[][j] = ;
if(a[][j] == && b[][j] == ) {
flag = ;
break;
}
}
if(flag) continue;
for(int r = ; r < n; r++) {
for(int c = ; c < n; c++) {
int tmp = ;
if(r > ) tmp += b[r-][c];
if(c > ) tmp += b[r-][c-];
if(c < n - ) tmp += b[r-][c+];
b[r][c] = tmp % ;
if(a[r][c] == && b[r][c] == ) {
flag = ;
break;
}
}
}
if(flag) continue;
int cnt = ;
for(int r = ; r < n; r++) {
for(int c = ; c < n; c++) {
if(a[r][c] != b[r][c]) cnt++;
}
}
ret = min(ret, cnt);
}
printf("Case %d: ", _++);
printf("%d\n", ret == 0x7f7f7f ? - : ret);
}
return ;
}

[UVA11464]Even Parity(状压,枚举)的更多相关文章

  1. [POJ1681]Painter's Problem(高斯消元,异或方程组,状压枚举)

    题目链接:http://poj.org/problem?id=1681 题意:还是翻格子的题,但是这里有可能出现自由变元,这时候枚举一下就行..(其实这题直接状压枚举就行) /* ━━━━━┒ギリギリ ...

  2. HDU2489【状压枚举】

    题意: 给你n个点的图,然后让你在图里挑m个点,达到sumedge/sumnode最小 思路: 由于数据范围小,状压枚举符合m个点的状态,我是用vactor存了结点位置,也记录了结点的sum值,然后跑 ...

  3. POJ3734【状压枚举】

    题意: 给你两个01矩阵,去掉矩阵B的某些行和某些列,问处理后的矩阵B能否变成矩阵A: 思路: 数据较小,状压枚举B矩阵列的数量=A矩阵列的数量时的状态,然后搞定了列,贪心判断B矩阵的行就好了: #i ...

  4. POJ - 1753 Flip Game(状压枚举)

    https://vjudge.net/problem/POJ-1753 题意 4*4的棋盘,翻转其中的一个棋子,会带动邻接的棋子一起动.现要求把所有棋子都翻成同一种颜色,问最少需要几步. 分析 同一个 ...

  5. POJ 1753 Flip Game(高斯消元+状压枚举)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45691   Accepted: 19590 Descr ...

  6. hdu 4770 状压+枚举

    /* 长记性了,以后对大数组初始化要注意了!140ms 原来是对vis数组进行每次初始化,每次初始化要200*200的复杂度 一直超时,发现没必要这样,直接标记点就行了,只需要一个15的数组用来标记, ...

  7. CF1556F Sports Betting (状压枚举子集DP)

    F 对于一张比赛图,经过缩点,会得到dag,且它一定是transitive的,因此我们能直接把比赛图缩成一个有向链.链头作为一个强连通分量,里面的所有点都是胜利的 定义F(win)表示win集合作为赢 ...

  8. [NYIST32]组合数(状压,枚举,暴力)

    题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=32 求n个数中挑出r个数字的所有情况,最后倒序输出所有情况. 状压枚举所有情况就是了 ...

  9. Uva11464 Even Parity

    枚举每个格子的状态显然是不可能的. 思考发现,矩阵第一行的状态确定以后,下面的状态都可以递推出来. 于是状压枚举第一行的状态,递推全图的状态并判定是否可行. /*by SilverN*/ #inclu ...

  10. HDU 5765 Bonds 巧妙状压暴力

    题意:给一个20个点无向连通图,求每条边被多少个极小割集包括 分析:极小割集是边的集合,很显然可以知道,极小割集恰好吧原图分成两部分(这个如果不明白可以用反证法) 然后就是奉上官方题解:http:// ...

随机推荐

  1. 【DP】斜率优化

    斜率优化 入门题:PKU3709 很多人貌似都是做这道题来K斜率优化的,所以看了资料以后还是开始入手吧. 然而还是得跪求大神的程序啊 ORZ ORZ…… 其实理解斜率优化就是会列斜率不等式,还要理解剔 ...

  2. RMQ(非log2储存方法)

    2016-03-31 RMQ 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 长度为n的数列A,以及q个询问,每次询问一段区间 ...

  3. RMB转换人民币大小金额

    MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  4. (栈的应用5.2.2)POJ 2106 Boolean Expressions(表达式求值)

    /* * POJ_2106.cpp * * Created on: 2013年10月30日 * Author: Administrator */ #include <iostream> # ...

  5. android 学习随笔二十九(自定义监听 )

    package com.itheima.momo.dialog; import com.itheima.momo.R; import android.app.AlertDialog; import a ...

  6. python爬虫框架scrapy实例详解

    生成项目scrapy提供一个工具来生成项目,生成的项目中预置了一些文件,用户需要在这些文件中添加自己的代码.打开命令行,执行:scrapy st... 生成项目 scrapy提供一个工具来生成项目,生 ...

  7. 使用git和github托管个人项目

    1.  安装 cygwin 和 cygwin 下的 git , 测试 git 命令可用;   参考: https://cygwin.com/install.html 2.  注册 github 账号: ...

  8. 161013、java实现邮件群发带附件

    要完成Java群发邮件功能,首先须加入mail.jar和activation.jar这两个包 下面是邮件的例子: import java.io.File; import java.util.Prope ...

  9. JSONArray.fromObject()注入处理日期Date格式

    package jsonDateProcess; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.L ...

  10. Dynamics AX 2012 R2 外部程序运行在没有AD的环境(如PDA) 调用AX服务

        Reinhard对这个问题研究了很久,也查了一些资料,整理了三种解决方案. 1.准备一台虚拟机A,A加入到了AD活动域,可以操作AX. PDA以远程桌面的方式,连接到虚拟机A. 在虚拟机上运行 ...