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;
}

  

原文地址:https://www.cnblogs.com/wenruo/p/5084829.html