CF2094C

· · 题解

Solution

发现第一个数是不确定的,走一个七字行,连起来为 G_{1,1}\to G_{1,2}\to\ldots\to G_{1,n}\to G_{2,n}\to G_{3,n}\to\ldots\to G_{n,n},纵坐标与横坐标加起来为 1+1,1+2,\ldots,1+n,2+n,3+n,\ldots,n+n,那么 p_1 就为前面遍历的数组中在 1-2n 的自然数中没有出现的数。

可以通过计算 1-2n 的自然数的总和减去数组中出现的数的总和求出第一个数。

Code

#include <bits/stdc++.h>
#include <cstdio>
#define int long long
#define ull unsigned long long
#define mod 998244353
#define MOD 1000000007
using namespace std;
const int N = 2e6 + 5,maxn = 3e3 + 5;
int g [maxn] [maxn];
int p [N];
signed main ()
{
    int T;
    cin >> T;
    while (T --)
    {
        int n;
        cin >> n;
        int cnt = 0;
        int s = 0;
        for (int i = 1;i <= n;i ++)
            for (int j = 1;j <= n;j ++)
            {
                int x;
                cin >> x;
                if (i == 1 || j == n) p [++ cnt] = x,s += x;
            }
        cout << 2 * n * (2 * n + 1) / 2 - s << ' ';
        for (int i = 1;i <= cnt;i ++) cout << p [i] << ' ';
        cout <<  endl;
    }
    return 0;
}