原题: http://acm.hdu.edu.cn/showproblem.php?pid=5601
题意:
起点为(1,1),终点为(n,m),每个格子非黑即白,1表示黑。现在有一条路径,走过的格子会反转,每个格子可以走多次,问是否存在一种走法走到终点后全白。
解析:
分析格子
1 2 3
4 5 6
7 8 9
1-2-1-2,3-6-3-6,9-8-9-8,即我可以不改变状态的情况下两个两个的移动,比方说我需要改变3这个位置,那么1-2-1-2,3,6-9-6-9,即中间插一步即可。设需要转换的1的个数为x,那么满足要求的步数应该为 。从(1,1)到(n,m)需要的步数为(n+m-1),所以当x与(n+m-1)同奇偶就可以,否则不可以。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;scanf("%d",&t);
while(t--){
int n,m;scanf("%d%d",&n,&m);
int ct=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int tmp;scanf("%d",&tmp);
if(tmp)ct++;
}
}
if((n+m-1)%2==ct%2)printf("YES\n");
else printf("NO\n");
}
}