题解:CF2094C Brr Brrr Patapim

· · 题解

题目大意

给你一个 nn \times n 的矩阵 GG_{ij}=P_{i+j},最后输出 2 \times n 个数,即 P 数组。同时,P 数组是 n 的排列。

思路

思路很简单,题目已经说了,G_{ij}=P_{i+j},所以我们直接双 for 循环遍历 G 数组,P_{i+j}=G_{ij},再特殊处理 P_1 的情况,直接用大小为 n 的桶数组存一遍,看哪个数没出现过,就是 P_1

如何提交

什么东西

cf

洛谷

AC 代码

禁止复制。

#include<bits/stdc++.h>
using namespace std;
int t,n;
int g[802][802],p[1602];
bool flag[1602];    //桶数组
int main(){
    scanf("%d",&t);
    while(t--){
        memset(p,-1,sizeof(p));
        memset(flag,false,sizeof(flag));
        //初始化
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                scanf("%d",&g[i][j]);
        //读入
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                p[i+j]=g[i][j];
        //p数组2~n的答案
        for(int i=1;i<=2*n;i++)
            flag[p[i]]=true;
        for(int i=1;i<=2*n;i++)
            if(flag[i]==false){
                p[1]=i;
                break;
            }
        //单独处理p1
        for(int i=1;i<=2*n;i++)
            printf("%d ",p[i]);
        printf("\n");
        //输出,别忘了空格和换行
    }
    return 0;
}

最后

我还是一个小学生,如有错误还请指出。
如果你想支持我,欢迎来看我的账号,期待与大家一起探索AI于编程。

我的账号——喜欢编程的杨同学

完结。