codeforces Codeforces Global Round 2 :C Ramesses and Corner Inversion

传送门

当时看的时候是没有什么想法的,然后看群里说这个题是个假题,唬人的。然后我撇了一眼数据范围,再然后就有了下面的优雅的暴力:就按最小矩阵2*2反转,一直到每行的最后一个和最后一列,判断下。如果不一样就是不行,否则就是全部反转了。
 

#include
#include
using namespace std;
const int maxn = 510;
int a[maxn][maxn],b[maxn][maxn];
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i = 0;i < n; i++)
        for(int j = 0;j < m; j++)
            scanf("%d",&a[i][j]);
    for(int i = 0;i < n; i++)
        for(int j = 0;j < m; j++)
            scanf("%d",&b[i][j]);
    for(int i = 0;i < n; i++)
    {
        for(int j = 0;j < m; j++)
        {
            if(a[i][j] != b[i][j])
            {
                if(j == m - 1 || i == n - 1)
                {
                    cout << "No" << endl;
                    return 0;
                }
                a[i][j] = !a[i][j];
                a[i][j+1] = !a[i][j+1];
                a[i+1][j] = !a[i+1][j];
                a[i+1][j+1] = !a[i+1][j+1];
            }
        }
    }
    printf("Yes\n");
    return 0;
}

 

你可能感兴趣的:(思维)