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

· · 题解

题目大意

构造一个 n × n 的矩阵,元素范围从 12n。要求 1 到 2n 每种元素至少出现一次,且恰有一个子矩阵的四角元素互不 相同。

- 考虑这种矩阵 ```python 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 6 7 8 9 10 5 6 7 8 11 12 ``` 可以发现**这种矩阵**一定符合要求 - 前 $(n − 2)$ 行,第 $i$ 行全填 $i$,这样子矩阵的上下边就只能选择最后两行,否则至少两个角会相同。 - 最后两行的前 $(n − 2)$ 列,第 $i$ 列全填 $(n − 2) + i$,这样子矩阵的左右边界就只能选择最后两列,否则至少两个角会相同。 - 右下角的 $2 × 2$ 子矩阵填剩下四个不同的数即可。 ## ACcode ```cpp #include<bits/stdc++.h> #define int long long using namespace std; int n,t,a[100005]; signed main() { t=1; while(t--) { cin>>n; cout<<"Yes\n"; for(int i=1;i<=n-2;i++) { for(int j=1;j<=n;j++) { cout<<i<<" "; } cout<<endl; } for(int i=1;i<=n-2;i++) cout<<i+n-2<<" "; for(int i=1;i<=2;i++) cout<<i+n-2+n-2<<" "; cout<<endl; for(int i=1;i<=n-2;i++) cout<<i+n-2<<" "; for(int i=1;i<=2;i++) cout<<i+2+n-2+n-2<<" "; cout<<endl; } return 0; } ```