UVA 11464 暴力+位运算 ***
题意:给你一个 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 暴力+位运算 ***的更多相关文章
- UVA 690 PipelineScheduling 位运算+dfs+剪枝
一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化. 预处理:预判一下并保存下一个可以放的位置距离之前的距离.这样可以减少很多判断. 最优化剪枝:如果当前长度+剩下没放的程序*最短间隔如果大于 ...
- Gym - 100203A Ariel 暴力+位运算
题意:第i种生物有k[i]个特征,分数是score[i],现在要参加竞赛,报出一种生物a,和一些特征h[i],参加竞赛的所有生物在这些h[i]上面的特征是一样的,a生物有h[i],则所有竞赛的生物都必 ...
- uva 818 (位运算 + 判环)
Cutting Chains What a find! Anna Locke has just bought several links of chain some of which may be ...
- UVa 818Cutting Chains (暴力dfs+位运算+二进制法)
题意:有 n 个圆环,其中有一些已经扣在一起了,现在要打开尽量少的环,使所有的环可以组成一条链. 析:刚开始看的时候,确实是不会啊....现在有点思路,但是还是差一点,方法也不够好,最后还是参考了网上 ...
- UVA - 13022 Sheldon Numbers(位运算)
UVA - 13022 Sheldon Numbers 二进制形式满足ABA,ABAB数的个数(A为一定长度的1,B为一定长度的0). 其实就是寻找在二进制中满足所有的1串具有相同的长度,所有的0串也 ...
- uva 10718 Bit Mask (位运算)
uva 10718 Bit Mask (位运算) Problem A Bit Mask Time Limit 1 Second In bit-wise expression, mask is a ...
- 【UVA】658 - It's not a Bug, it's a Feature!(隐式图 + 位运算)
这题直接隐式图 + 位运算暴力搜出来的,2.5s险过,不是正法,做完这题做的最大收获就是学会了一些位运算的处理方式. 1.将s中二进制第k位变成0的处理方式: s = s & (~(1 < ...
- UVA 10718 Bit Mask 贪心+位运算
题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...
- UVA 565 565 Pizza Anyone? (深搜 +位运算)
Pizza Anyone? You are responsible for ordering a large pizza for you and your friends. Each of th ...
随机推荐
- Ubuntu使用MyEclipse闪退的解决办法
修改myeclipse.ini文件, -Xmx512m-XX:MaxPermSize=512m-XX:ReservedCodeCacheSize=256m-Dosgi.nls.warnings=ign ...
- 【BZOJ-1570】BlueMary的旅行 分层建图 + 最大流
1570: [JSOI2008]Blue Mary的旅行 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 388 Solved: 212[Submit ...
- Mysql服务启动的时候 如何加载配置文件
Mysql服务启动的时候 如何引导配置文件 (启动加载顺序)
- web开发——写一个简单的表格导出操作
一.前台页面: 主要是一个按钮和一个表格,表格有显示数据,按钮负责将表格中的数据选择性地导出.除此外,可以附加一个小窗口和进度条,用于显示下载进度. 1. 按钮:<a href="ja ...
- iOS获取设备唯一标识的8种方法
8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...
- js分页小结
今天解决了JS分页的问题1 页码 给每页的内容套一个相同的类名 通过选择器加上.length或者.size() 来获得总页数2当前页的页码可以使用each(function(index,DOMsss ...
- Interop with Native Libraries
http://www.mono-project.com/docs/advanced/pinvoke/
- 脑筋急转弯——Google 面试
1. 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情...村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情.村里的规矩不容忍通奸.任何一个妻子, ...
- PHP中global与$GLOBALS['']的区别
+++ 探讨(一)+++++++++++++++++++++++++++++++++++++++ 很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是 $GL ...
- CPU的内部架构和工作原理 (转,相当不错)
http://blog.chinaunix.net/uid-23069658-id-3563960.html 一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样, ...