HDU 5601 N*M bulbs 找规律
N*M bulbs
题目连接:
http://codeforces.com/contest/510/problem/C
Description
NM个灯泡排成一片,也就是排成一个NM的矩形,有些开着,有些关着,为了节约用电,你要关上所有灯,但是你又很懒。
刚好有个熊孩纸路过,他刚好要从左上角的灯泡走去右下角的灯泡,然后离开。
但是毕竟熊孩纸,熊孩纸在离开一个灯泡之前,一定会动一下当前开关,也就是开的变关,关的变开。
想问你可不可能关完所有的灯,同时熊孩纸也可以到达右下角的灯泡,然后离开。
Input
第一行T,表示T组数据。
接下来T组数据:
每组数据,第一行N,M,后面一个N*M的01矩阵,表示灯泡的初始开关状态,0表示关,1表示开。
1≤T≤10
1≤N,M≤1000
Output
每组数据,如果可以输出"YES",否则输出"NO"。
Sample Input
1
1 5
1 0 0 0 0
Sample Output
YES
Hint
题意
题解:
我们发现操作数跟n+m-1n+m−1同奇偶,那是不是当11的个数跟n+m-1n+m−1同奇偶是就是YES呢?
答案是肯定的,我们这样看:首先将棋盘黑白染色,就是若(i,j)(i,j)格子,若(i+j)(i+j)是奇数,那么就是黑格子,否则就是白格子。
我们发现我们可以通过一种操作使得从一个格子走到斜方向的任意一个格子。
这个操作很简单,我们假设一个2*22∗2的棋盘:
1 2
3 4
我们这样走:1->2->1->2->41−>2−>1−>2−>4, 11就直接走到44了,而且不产生任何操作。
也就是同色格子可以互相到达。
然后我们发现如果要操作一个开关,那么最后所在格子颜色一定会改变。
同上面这个例子:
1 2
3 4
假设我们要操作22这个格子。
1->2->1->31−>2−>1−>3
我们成功操作了22这个格子,但是从白格子转到黑格子了。
也就是说
假设格子(n,m)(n,m)下面有个格子(n+1,m)(n+1,m)是最后终点,然而每次操作一个格子需要改变一次颜色。
也就是我们从(1,1)(1,1)改变了若干次颜色后,最后颜色一定要和(n+1,m)(n+1,m)相同。
也就是说11的个数要和(n+1+m)(n+1+m)同奇偶。
也就是说11的个数要和(n+m-1)(n+m−1)同奇偶。
否则无解。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;scanf("%d",&t);
while(t--)
{
int n,m,x,sum=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
scanf("%d",&x);
if(x==1)
sum++;
}
}
if((n+m-1)%2==sum%2)
puts("YES");
else puts("NO");
}
}
HDU 5601 N*M bulbs 找规律的更多相关文章
- HDU 3032 multi-sg 打表找规律
普通NIM规则加上一条可以分解为两堆,标准的Multi-SG游戏 一般Multi-SG就是根据拓扑图计算SG函数,这题打表后还能发现规律 sg(1)=1 sg(2)=2 sg(3)=mex{0,1,2 ...
- hdu 1030 Delta-wave(数学题+找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1030 Delta-wave Time Limit: 2000/1000 MS (Java/Others ...
- HDU 5703 Desert 水题 找规律
已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...
- HDU 4910 Problem about GCD 找规律+大素数判断+分解因子
Problem about GCD Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 4572 Bottles Arrangement(找规律,仔细读题)
题目 //找规律,123321123321123321…发现这样排列恰好可以错开 // 其中注意题中数据范围: M是行,N是列,3 <= N < 2×M //则猜测:m,m,m-1,m-1 ...
- HDU 1041 Computer Transformation(找规律加大数乘)
主要还是找规律,然后大数相乘 #include<stdio.h> #include<string.h> #include<math.h> #include<t ...
- HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 1391 number steps(找规律,数学)
Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown ...
- HDU 4731 Minimum palindrome (找规律)
M=1:aaaaaaaa…… M=2:DFS+manacher, 暴出N=1~25的最优解,找规律.N<=8的时候直接输出,N>8时,头两个字母一定是aa,剩下的以aababb循环,最后剩 ...
随机推荐
- Effective java笔记4--方法
一.检查参数的有效性 极大多数方法和构造函数都会对于传递给它们的参数值有某些限制. 对于公有的方法,使用Javadoc @throws标签(tag)可以使文档中记录下“一旦针对参数值的限制被违反之后将 ...
- smtp邮件营销吧
SPF 设置说明: 首先你必须有自己的域名.没有的话是不可能设置 SPF 的. SPF 是域名的一条 TXT 记录. 如果你的邮箱服务器是企业邮箱服务商的,可以在自己的 SPF 中直接包含服务商 SP ...
- OpenGl从零开始之坐标变换(下)
这节主要来理解投影变换和视口变换的使用. 1.正射投影:glOrtho 函数原型: void glOrtho(GLdouble left,GLdouble right,GLdouble bottom, ...
- Floyd算法解决最短路径问题
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的中午,A和B在吃过中饭之后,来到了一个新的鬼屋!鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些 ...
- <javascript搞基程序设计>笔记2015-9-25
1.一元加减 var a=28; alert(--a); //27,先减后用 alert(a--); //27,先用后减 alert(a); //26, 2.位操作符 按位非(NOT):按位取反:符号 ...
- 最小高度的BST
加深对BST的构建过程及递归思想的理解. /***************************************************** * \file MinimalBST.cpp * ...
- SCAU 13校赛 17115 ooxx numbers
17115 ooxx numbers 时间限制:1000MS 内存限制:65535K 题型: 编程题 语言: 无限制 Description a number A called oo numbe ...
- WinForms 使用Graphics绘制字体阴影
C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果: 一种是对文本使用去锯齿的边缘处理,在两个不同的位置绘制文本,形成阴影: 另一个是以阴影为线条,构造影线画刷,先画背景再画前景,使用grap ...
- mysql-python模块编译问题解决
解决方法:yum -y install mysql-devel libxml2 libxml2-dev libxslt* zlib gcc openssl [root@localhost MySQL- ...
- datagrid url json
<div class="easyui-accordion" style="width:500px;height:300px;"> <div t ...