题解:B4164 [BCSP-X 2024 12 月初中组] 末日塔后传
solution
一道构造。
先假设已经有了
因为
我们可以从
如下图,黑点是
所以我们知道,只要
故只要找到有解的最小奇数和偶数即可,
实现方面,对于奇数,从
code
#include <bits/stdc++.h>
using namespace std;
int n, a[505][505];
int main () {
cin >> n;
if (n==2||n==4) {
puts("NO");
return 0;
}
puts("YES");
if (n%2==0)
a[1][2]=a[1][3]=a[1][4]=1,
a[2][3]=a[2][5]=a[2][6]=1,
a[3][4]=a[3][5]=a[3][6]=1,
a[4][5]=a[4][2]=a[5][6]=a[5][1]=a[6][1]=a[6][4]=1;
for (int i=(n%2?2:7); i<=n; a[i][i+1]=1, i+=2)
for (int j=1; j<i; ++j)
a[j][i]=a[i+1][j]=1;
for (int i=1; i<=n; ++i, cout << '\n')
for (int j=1; j<=n; ++j)
cout << a[i][j] << ' ';
return 0;
}