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循环,最后剩 ...
随机推荐
- USB鼠标过一段时间后失灵问题的修复
现象: USB鼠标计算机锁屏一段时间后,不能动了,拔下来重新插上后,又恢复正常了. 原因: 这是系统默认USB电源管理造成的.一段时间不用后,自动关闭了USB电源. 解决方法: 1.进入设备管理器 在 ...
- 15stl模板
1.stack #include<iostream> #include<stdio.h> #include<stack> using namespace std; ...
- Learning Vector
题意: 给出n组x,y增量,从(0,0)开始以x,y坐标增加后等到的终点坐标,可以构成一个面积,再以这个终点为起点再增加,以此类推,使用增量顺序不同,得到的面积不,求用k组增量能得到的最大的面积. 分 ...
- CDB和PDB基本管理
CDB和PDB基本管理 这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Dat ...
- Selenium2Library系列 keywords 之 _SelectElementKeywords 之 unselect_from_list_by_index(self, locator, *indexes)
def unselect_from_list_by_index(self, locator, *indexes): """Unselects `*indexes` fro ...
- 如何解决grails2.3.2中不能运行fork模式
升级到grails 2.3.2之后,运行时报如下的异常: Exception in thread "main" Error | Forked Grails VM exited wi ...
- jboss服务器配置多实例
jboss配置多实例的重要性 在开发, 测试项目的过程中, 我们经常需要在同一台主机上, 同一个服务器上配置多个运行实例.这样做有一下几点好处: 在项目开发, 调试阶段能最大限度的节省资源 某个实例出 ...
- 浅谈w3c标准
#浅谈w3c标准 ##w3c标准是什么 w3c标准包括多个方面,官方是从应用角度分的,相关的文档可以戳[这里](http://www.w3.org/standards/).如果从WEB技术角度,可以分 ...
- jq 写法
<!doctype html> <html> <head> <meta charset="utf-8"> <script sr ...
- 统一入口的Ajax验证
此前一直没有写博客的习惯,只是将一些心得和体会大致的用笔写在一个本子上,今天刚刚开通博客,就随便写一点吧! 关于服务端验证,大致可以分为登陆验证与功能权限验证,而以前端请求方式来区分的话,又可分为 1 ...