• CodeForces 622D Optimal Number Permutation


    是一个简单构造题。

    请观察公式:

    绝对值里面的就是 |di-(n-i)|,即di与(n-i)的差值的绝对值。

    事实上,对于任何n,我们都可以构造出来每一个i的di与(n-i)的差值为0。

    换句话说,就是这个最小值一定可以构造出来是0。

    假设输入是6:
    那么可以这样构造:1 3 5 5 3 1 2 4 6 4 2 6

    假设输入是7:
    那么可以这样构造:1 3 5 7 5 3 1 2 4 6 6 4 2 7

    从上面就能看出怎么构造了,n最后放空缺的两个位置,剩下的从小到大一个一个放,奇数放左边构造,偶数放右边构造。

    #include <stdio.h>
    #include <algorithm>
    #include <string.h>
    #include <queue>
    #include <stack>
    #include <map>
    #include <vector>
    using namespace std;
    
    const int maxn = 2*500000 + 10;
    int n;
    int ans[maxn];
    
    int main()
    {
        scanf("%d", &n);
        memset(ans, 0, sizeof ans);
        int left = 1, right = n + 1;
        for (int i = 1; i <= n - 1; i++)
        {
            if (i % 2 == 1)
            {
                ans[left] = i;
                ans[left + n - i] = i;
                left++;
            }
            else
            {
                ans[right] = i;
                ans[right + n - i] = i;
                right++;
            }
        }
        for (int i = 1; i <=2* n; i++) if (!ans[i]) ans[i] = n;
        for (int i = 1; i <= 2*n; i++) printf("%d ", ans[i]);
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    少儿编程之图形编程
    少儿编程是什么?要学吗?如何学?
    AlloyDesigner 使用
    轮播总结
    git实用攻略
    git subtree用法(转)
    vue 插值,v-once,v-text, v-html
    webpack的学习准备工作
    webstorm中github的配置
    less 安装和webstorm的使用
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5190276.html
Copyright © 2020-2023  润新知