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 找规律的更多相关文章

  1. HDU 3032 multi-sg 打表找规律

    普通NIM规则加上一条可以分解为两堆,标准的Multi-SG游戏 一般Multi-SG就是根据拓扑图计算SG函数,这题打表后还能发现规律 sg(1)=1 sg(2)=2 sg(3)=mex{0,1,2 ...

  2. hdu 1030 Delta-wave(数学题+找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1030 Delta-wave Time Limit: 2000/1000 MS (Java/Others ...

  3. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  4. HDU 4910 Problem about GCD 找规律+大素数判断+分解因子

    Problem about GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. HDU 4572 Bottles Arrangement(找规律,仔细读题)

    题目 //找规律,123321123321123321…发现这样排列恰好可以错开 // 其中注意题中数据范围: M是行,N是列,3 <= N < 2×M //则猜测:m,m,m-1,m-1 ...

  6. HDU 1041 Computer Transformation(找规律加大数乘)

    主要还是找规律,然后大数相乘 #include<stdio.h> #include<string.h> #include<math.h> #include<t ...

  7. HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. HDU 1391 number steps(找规律,数学)

    Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown ...

  9. HDU 4731 Minimum palindrome (找规律)

    M=1:aaaaaaaa…… M=2:DFS+manacher, 暴出N=1~25的最优解,找规律.N<=8的时候直接输出,N>8时,头两个字母一定是aa,剩下的以aababb循环,最后剩 ...

随机推荐

  1. [Java]获取Window界面的标题栏的高度大小

    利用JFrame继承java.awt.Container类的函数getInsets().该函数返回insets类. import java.awt.Insets; import javax.swing ...

  2. js画线

    <body> <div id="main"> </div> <div id="fd" style="filt ...

  3. [讲座]【项目收集】“清流资本”互联网金融沙龙——颠覆者的创新与机会

    [项目收集]"清流资本"互联网金融沙龙--颠覆者的创新与机会 2014年4月19日 14:00 - 2014年4月19日 17:00 北京海淀北京海淀区海淀图书城南侧3W咖啡 限额 ...

  4. CListCtrl总结.xml

    pre{ line-height:1; color:#d1653c; background-color:#000000; font-size:16px;}.sysFunc{color:#566d68; ...

  5. ansible官方文档翻译之变量

    Ansible变量 在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者 ...

  6. html5标签集结1

    1.<bdo>标签:覆盖默认的文本方向. <bdo dir="ltr">Here is some text</bdo>  显示结果(从左到右): ...

  7. Azure杂七杂八系列(二) - 如何在Azure上重新配置VM

    我们经常遇到这样的问题,  对于已经建立的VM进行性能提升, 比如需要更好的虚拟机或者需要迁移到其他的虚拟网络 那么我们可以使用以下的方法进行修改. 1. 如图所示, TESTVMXX位于North ...

  8. iOS开发-你真的会用SDWebImage?(转发)

    原文地址: http://www.jianshu.com/p/dabc0c6d083e SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高.但是你真的会用吗?本文接下来将通过例子分析 ...

  9. 移动端和web端前端UI库—Frozen UI、WeUI、SUI Mobile

    web http://www.pintuer.com/ 拼图 http://www.h-ui.net/ http://www.layui.com/  很厉害的一个个人产品 http://amazeui ...

  10. jszs 枚举算法

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...