专栏文章

题解:P14247 [CCPC 2024 Shandong I] 矩阵

P14247题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minkcmqk
此快照首次捕获于
2025/12/02 03:49
3 个月前
此快照最后确认于
2025/12/02 03:49
3 个月前
查看原文

题目链接

思路

题中意思是只需要一个四元组 (x,y,z,w)(x,y,z,w) 满足:
  • 1x<zn1 \le x<z \le n
  • 1y<wn1 \le y<w \le n
  • ax,yax,waz,yaz,wa_{x,y},a_{x,w},a_{z,y},a_{z,w} 互不相同。
那么我们只需让矩阵的右下角的四个数字也就是: an1,n1an1,nan,n1an,na_{n-1,n-1},a_{n-1,n},a_{n,n-1},a_{n,n} 互不相同即可。
举个例子:n=3n=3 时答案可以是
CPP
1 1 1
2 3 4
2 5 6
也就是让前 n2n-2 行中第 ii 行都填 iin1n-1 行第 ii 列填 i+n2i+n-2,最后一行的前 n2n-2 列的第 ii 列填 i+n2i+n-2,最后两个数填 2×n12 \times n-12×n2 \times n

AC 代码

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

int main(){
    int n;
    cin>>n;
    cout<<"Yes\n";
    for(int i=1;i<=n-2;i++){
        for(int j=1;j<=n;j++){
            cout<<i<<' ';
        }
        cout<<'\n';
    }
    for(int i=1;i<=n;i++)
			cout<<i+n-2<<" ";
	cout<<'\n';
	for(int i=1;i<=n-2;i++)
		cout<<i+n-2<<' ';
    cout<<2*n-1<<' '<<2*n;
    return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...