zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    spring注入原型bean
    按时间间隔查询
    Qconf安装文档
    HttpEnum
    MyIfmHttpClient
    enum StatCode
    Linux修改war包中文件
    maven settings.xml windows
    maven settings.xml linux
    docker报错
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5190276.html
Copyright © 2011-2022 走看看