题解:CF690E1 Photographs (I)

· · 题解

题目大意

给定一张 n \times m 的黑白照片,让你判断图片是否被处理过。

思路

不难发现,被处理过的图片的第 \left \lfloor \frac{n}{2} \right \rfloor 行与第 \left \lfloor \frac{n}{2} \right \rfloor +1 行的差异较大,而未被处理过的图片的第 1 行与第 n 行差异较大。我们只需比较\left \lfloor \frac{n}{2} \right \rfloor 行与第 \left \lfloor \frac{n}{2} \right \rfloor +1 行的差异1 行与第 n 行差异即可。

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 605;
int T, n, m, a[N][N];

int check(int x, int y) {
    int sum = 0;
    for (int i = 1; i <= m; i++) sum += abs(a[x][i] - a[y][i]);
    return sum;
}

int main() {
    cin.tie(0), cout.tie(0);
    cin >> T;
    while (T--) {
        cin >> n >> m;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++) cin >> a[i][j];
        cout << (check(1, n) < check(n / 2, n / 2 + 1) ? "YES" : "NO") << "\n";
    }
    return 0;
}