好耶这是一篇blog

摸鱼大半个学期总算实际做出来了
一些测试:


来点大猫

C - Another Distinct Values(By EnderTime)

题意: 往一个n×n的矩阵里填入1,0和-1,要求最后矩阵的各行的和以及各列的和各不相同。

可以通过灵感大成功枚举几项发现n为奇数的方阵是无解的,偶数的都有解(具体严谨的证明可以看看别人的证明)。
至于构造答案的方法就五花八门了,一种比较方便输出的就是:以副对角线为界,将矩阵左上角三角形内全部设置为1,右下角的三角形内全部设置为-1。(此时只有交点处于主对角线上的一对行和列它们的和相等,而并排的两列或两行都相差2,那么只要把它们与副对角线的交点设置值不同且相差不超过2的值即可)总之只要在副对角线上隔一个0设置一个1即可。

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;

inline void prt(int n,int k){
for(int i=1;i<=n;i++) cout << k << ' ';
}

void solve(){
int n;
cin >> n;
if(n&1){
cout << "impossible" << endl;
return;
}
cout << "possible" << endl;
for(int i=1;i<=n;i++){
prt(i-1,1);
prt(1,i&1);
prt(n-i,-1);
cout << endl;
}
}

int main(){
int t;
cin >> t;
while(t--) solve();
return 0;
}