[CF1487C] Minimum Ties - 构造
Description
这场比赛会有 \(n\) 个球队参与,每个球队都会与其他的所有球队对决正好一场。对于每局比赛,如果分出胜负则胜者得 \(3\) 分,负者得 \(0\) 分,如果没有分出胜负就双方各得 \(1\) 分。构造一种局面,使得所有球队的积分完全相同,同时平局数最小。
Solution
如果 n 是奇数,那么每个人恰好赢等于输次数即可
如果 n 是偶数,我们可以让 2i-1 和 2i 平一场,这样剩下的部分每个人恰好赢等于输次数即可
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
if (n & 1)
{
for (int i = 0; i < n * (n - 1) / 2; i++)
{
if (i & 1)
cout << 1 << " ";
else
cout << -1 << " ";
}
}
else
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (i % 2 == 0 && j == i + 1)
cout << 0 << " ";
else if ((i + j) & 1)
cout << 1 << " ";
else
cout << -1 << " ";
}
}
}
cout << endl;
}
}