• CF359B Permutation


    洛咕

    题意:给定整数(n)(k),构造一个长度为(2*n)的排列,满足:(sum_{i=1}^{n}mid{a_{2i}-a_{2i-1}}mid-midsum_{i=1}^{n} a_{2i}-a_{2i-1} mid=2*k)

    分析:一看到排列,就知道是要找性质了.首先不难发现如果排列正好是(1,2,....2*n-1,2*n),那么这个初始排列的贡献是0.

    然后我们考虑交换相邻两项,可以发现式子(sum_{i=1}^{n}mid{a_{2i}-a_{2i-1}}mid)的值没有改变,而式子(mid sum_{i=1}^{n} a_{2i}-a_{2i-1} mid)的值变小了2,所以既然每交换(2*i-1)(2*i)就会产生2的贡献,我们就只要交换k次即可.

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<map>
    #include<set>
    #define ll long long
    using namespace std;
    inline int read(){
        int x=0,o=1;char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
        if(ch=='-')o=-1,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*o;
    }
    int main(){
    	int n=read(),k=read();
    	for(int i=1;i<=n;++i){
    		if(k){
    			printf("%d %d ",2*i,2*i-1);
    			--k;
    		}
    		else printf("%d %d ",2*i-1,2*i);
    	}puts("");
        return 0;
    }
    
    
  • 相关阅读:
    数据结构13——博弈论SG函数
    数据结构12——最近公共祖先
    数据结构11——双联通
    mui
    rem
    关于apicloud图片缓存
    apicloud代码压缩和全局加密
    数据库设计
    common常用到的类
    RSA生成、加密、解密、签名。
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11533975.html
Copyright © 2020-2023  润新知