题解:P14247 [CCPC 2024 Shandong I] 矩阵
lyxqqq1
·
·
题解
题目大意
构造一个 n × n 的矩阵,元素范围从 1 到 2n。要求 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;
}
```