hdu5601-N*M bulbs(黑白棋盘染色)
一个矩形,一个人从左上角走到右下角,每走过一个位置把0变成1,1变成0.
求有没有可能他离开之后所有的数都是0
假设这个矩形是一个棋盘,黑白相间。
这样会发现从一个颜色走到相同颜色可以对棋盘不产生任何影响,也可改变偶数个格子。从一个颜色走到另一个颜色必须转化奇数次。
也就是从左上角走到右下角,如果两个格子颜色相同,那么就可以改变偶数个,否则改变奇数个。
看(n+m-1)和1的个数是否同奇偶即可。
#include <iostream> using namespace std; int main() { std::ios::sync_with_stdio(false); int m, n, t; cin >> t; while (t--) { cin >> n >> m; int tot = 0; int tmp; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> tmp; tot += tmp; } } if ((m + n - 1 + tot) & 1) cout << "NO" << endl; else cout << "YES" << endl; } return 0; }