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<<' ';
}
posted @ 2021-09-03 18:27  lei_yu  阅读(28)  评论(0编辑  收藏  举报