给你n,求permutation [ 1 , 2 n ] [1,2n] [1,2n]数字能不能构造出 n n n个数字,每个数字是其中两个数字之和。
偶数不行,通过之和相同构造n和k的关系,k是构造后的首项。
奇数的话,我们把 [ 1 , 2 n ] [1,2n] [1,2n]前n个放到 A A A,后n个放到 B B B,通过构造 ( A , B ) (A,B) (A,B),先处理奇数A每次+2,B每次-1。 处理完奇数后,偶数也一样处理。
这样就能构造出consecutive的seq了
void solve()
{
int n;
cin >> n;
if (n % 2 == 0)
{
cout << "NO\n";
return;
}
int k = (3 * n + 3) / 2;
cout << "YES\n";
for (int i = 1; i <= n; i += 2)
{
cout << i << " " << k - i << "\n";
k++;
}
for (int i = 2; i <= n; i += 2)
{
cout << i << " " << k - i << "\n";
k++;
}
}