自学内容网 自学内容网

1788C - Matching Numbers

给你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++;
    }
}

原文地址:https://blog.csdn.net/TKKDOUZI/article/details/142882148

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!