题意:给你一个 n * n 的 01 矩阵,现在你的任务是将这个矩阵中尽量少的 0 转化为 1 ,使得每个数的上下左右四个相邻的数加起来是偶数。求最少的转化个数。

新风格代码

lrj书上说的很清楚了,就是判断下一行的代码有点冗余了,但是很好理解,就是模拟每位有的数字之和,然后判断未知为应该填的数字

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("\n*****\n");
#define sc(a) scanf("%d",&a);
#define pt(a) printf("%d\n",a);
const int MAXN=; //define single variable int n,m,tt;
int ans,sum,sum1,sum2,tot,Max; //define arrays
int a[MAXN][MAXN],b[MAXN][MAXN];
char s[MAXN];
int vis[MAXN];
//define struct
struct Node
{
int x,y;
Node(){}
/*Node(int xx,int yy,int tt)
{ }*/
void in()
{
scanf("%d%d",&x,&y);
}
}node[MAXN]; //others
bool cmp(Node a,Node b)
{
return a.y>b.y;
} void init()
{
ans=INF,sum=,sum1=,sum2=,tot=,Max=;
//cl(vis);
//cl(node);
cl(a),cl(b);
} int check(int st)
{
//printf("st: %d\n",st);
cl(b);
int w=;
int i,j,k;
for(i=;i<n;i++)
{
if(st&(<<i))
{
b[][i]=;
}
else b[][i]=;
}
/*for(i=0;i<n;i++)
{
printf("%d ",b[0][i]);
}
printf("\n");*/
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
if(a[i][j]==&&b[i][j]==) return INF; //注意只能由0变成1,不能从1变成0
w=;
if(i==) //在顶层
{
if(j==) //在顶层左上角
{
w=b[i][j+];
}
else if(j==n-) //顶层右上角
{
w=b[i][j-];
}
else w=b[i][j-]+b[i][j+];
}
else if(i==n-)
{
if(j==)
{
w=b[i][j+]+b[i-][j];
}
else if(j==n-)
{
w=b[i-][j]+b[i][j-];
}
else w=b[i-][j]+b[i][j+]+b[i][j-];
if(w%!=) return INF;
}
else
{
if(j==)
{
w=b[i-][j]+b[i][j+];
}
else if(j==n-)
{
w=b[i-][j]+b[i][j-];
}
else
{
w=b[i-][j]+b[i][j-]+b[i][j+];
}
}
b[i+][j]=w%==?:;
}
}
/*ts
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
ts*/
int cnt=;
for(i=;i<n;i++)
for(j=;j<n;j++)
{
if(a[i][j]!=b[i][j]) cnt++;
}
return cnt;
} int main()
{
int i,j,k,ca=;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif scanf("%d",&tt);
while(tt--)
{
printf("Case %d: ",ca++);
init();
sc(n)
for(i=;i<n;i++)
for(j=;j<n;j++)
sc(a[i][j])
for(i=;i<(<<n);i++)
{
ans=min(ans,check(i));
}
if(ans==INF) ans=-;
pt(ans)
}
}

UVA 11464 暴力+位运算 ***的更多相关文章

  1. UVA 690 PipelineScheduling 位运算+dfs+剪枝

    一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化. 预处理:预判一下并保存下一个可以放的位置距离之前的距离.这样可以减少很多判断. 最优化剪枝:如果当前长度+剩下没放的程序*最短间隔如果大于 ...

  2. Gym - 100203A Ariel 暴力+位运算

    题意:第i种生物有k[i]个特征,分数是score[i],现在要参加竞赛,报出一种生物a,和一些特征h[i],参加竞赛的所有生物在这些h[i]上面的特征是一样的,a生物有h[i],则所有竞赛的生物都必 ...

  3. uva 818 (位运算 + 判环)

     Cutting Chains  What a find! Anna Locke has just bought several links of chain some of which may be ...

  4. UVa 818Cutting Chains (暴力dfs+位运算+二进制法)

    题意:有 n 个圆环,其中有一些已经扣在一起了,现在要打开尽量少的环,使所有的环可以组成一条链. 析:刚开始看的时候,确实是不会啊....现在有点思路,但是还是差一点,方法也不够好,最后还是参考了网上 ...

  5. UVA - 13022 Sheldon Numbers(位运算)

    UVA - 13022 Sheldon Numbers 二进制形式满足ABA,ABAB数的个数(A为一定长度的1,B为一定长度的0). 其实就是寻找在二进制中满足所有的1串具有相同的长度,所有的0串也 ...

  6. uva 10718 Bit Mask (位运算)

    uva 10718  Bit Mask  (位运算) Problem A Bit Mask Time Limit 1 Second In bit-wise expression, mask is a ...

  7. 【UVA】658 - It&#39;s not a Bug, it&#39;s a Feature!(隐式图 + 位运算)

    这题直接隐式图 + 位运算暴力搜出来的,2.5s险过,不是正法,做完这题做的最大收获就是学会了一些位运算的处理方式. 1.将s中二进制第k位变成0的处理方式: s = s & (~(1 < ...

  8. UVA 10718 Bit Mask 贪心+位运算

    题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...

  9. UVA 565 565 Pizza Anyone? (深搜 +位运算)

      Pizza Anyone?  You are responsible for ordering a large pizza for you and your friends. Each of th ...

随机推荐

  1. 初步搭建RocketMQ环境

    1. 去官网https://github.com/alibaba/RocketMQ/releases下载alibaba-rocketmq-3.2.6.tar.gz,这个是已经maven install ...

  2. RabbitMQ 声明Queue时的参数们的Power

    参数们的Power 在声明队列的时候会有很多的参数 public static QueueDeclareOk QueueDeclare(this IModel model, string queue ...

  3. Root--超级用户

    http://www.shuame.com/root/  root (计算机术语言) ROOT存在于Linux系统.UNIX系统(如AIX.BSD等)和类UNIX系统(如稳定到服务器都在用的Debia ...

  4. JVM内存模型、指令重排、内存屏障概念解析

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器.运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要.否则,你很难搞清楚哪 ...

  5. C# 中的委托和事件(转)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  6. Effective Java Second Edition --- Builder Pattern

    如果类的构造器或者静态工厂中有多个参数,设计这种类时,Builder模式是一种不错的选择,特别是当大多数参数是可选的时候. 与使用传统的重载构造函数模式相比,使用Builder模式的客户端代码更易于阅 ...

  7. 常见HTTP状态码列表

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...

  8. 用Canvas写桌球游戏!!!

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 昨天上班的时候闲着无事,就用Canvas写了个桌球游戏来玩玩....所以就拿这游戏上来水一发.或许对一些刚学canvas的人有帮助. 话说 ...

  9. Proj.4坐标系统创建参数

    Proj.4坐标系统创建参数 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 本文原文地址(https://github.com/OSGeo/proj.4/wiki ...

  10. [转]在MyEclipse中设置struts.xml自动提示功能

    导入标签:<%@ taglib uri="/struts-tags" prefix="s" %> 要想在MyEclipse中实现struts.xml ...