CF482A Diverse Permutation
A从来不会难,就是一个简单的构造。
从样例就可获得启发
利用
\(1\)
\(1+k\)
\(1+k-(k-1)\)
\(1+k-(k-1)+(k+2)\)
这样的方式,正好\(k\)个数便可以满足有k种不同差值的数。
因为\(n>k\),所以必然正确。
后面就k+1,k+2,...,n即可
#include<bits/stdc++.h>
using namespace std;
#define orz cout<<"lyakioi!!!!!!!!!!!!!!!!!"<<endl
inline int r(){int s=0,k=1;char c=getchar();while(!isdigit(c)){if(c=='-')k=-1;c=getchar();}while(isdigit(c)){s=s*10+c-'0';c=getchar();}return s*k;}
int n,k,now=1;
int main()
{
n=r();k=r();
int sb=1;
for(int i=k;i;i--)
{
cout<<now<<" ";
now+=sb*i;
sb*=-1;
}
cout<<now<<" ";
for(int i=k+2;i<=n;i++)
cout<<i<<' ';
}
本文来自博客园,作者:lei_yu,转载请注明原文链接:https://www.cnblogs.com/lytql/p/15224374.html