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 ...
随机推荐
- 冰冻三尺非一日之寒-socket
第八章 Socket语法及相关 SocketServer实现多并发 socket概念: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket又称&q ...
- 更新/替换系统 hosts,轻松访问国外站点
更新 hosts 下面介绍的操作均可能覆盖现有 hosts ,进行操作前请先确认是否需要备份. 推荐使用本项目的 Host Tools 来自动化 备份/配置 工作. 若更新 hosts 未立即生效,请 ...
- hdu2929 Bigger Is Better
题意 给出n根木棍,要你拼一个最大的数,并且这个数是m的倍数. 题解 显然越长的数越大.设\(dp[i][j]\)表示用i根木棍并且\(mod m = j\)的最大长度. 我们很容易想出dp方程,再用 ...
- Java程序员岗位
Java程序员岗位面试题有哪些? 1.面向对象的特征有哪些方面(1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择 ...
- Linux硬链接和软链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...
- 分享一个.NET实现的简单高效WEB压力测试工具
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测 ...
- Java Web学习笔记3
今天做了一个实验:Servlet访问WEB-INF目录下的文件notice.html 最后始终不能出现预期的效果,我猜想可能是使用了Tomcat 8版本的原因吧,暂时放下,等以后知识丰富了,再来解决它 ...
- css3 动画效果 总结 不断完善~~
1.transition 动画过程改变某个css属性的效果 (比如宽高 颜色) 语法 transition: all 所有元素 + ...
- JMS开发步骤和持久化/非持久化Topic消息
------------------------------------------------ 开发一个JMS的基本步骤如下: 1.创建一个JMS connection factory 2.通过co ...
- 100多个基础常用JS函数和语法集合大全
网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...