首页 > 其他 > 详细

B. Sorted Adjacent Differences(思维构造)

时间:2020-05-03 20:37:38      阅读:61      评论:0      收藏:0      [点我收藏+]

\(给出n个数字,要求构造一个由这n个数组成的序列,使得|a_1-a_2|<=|a_2-a_3|...<=|a_{n-1}-a_n|\)

\(排序后,从数列中间取个数,然后从左右分别循环取数,这样保证差值递增\)

\(还是很巧妙地.\)

#include <bits/stdc++.h>
using namespace std;
int t,n,a[100009];
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<=n;i++)	cin>>a[i];
		sort(a+1,a+1+n);
		cout<<a[(n+1)/2]<<" ";
		int l=(n+1)/2-1,r=(n+1)/2+1,ok=0;
		while(1)
		{
			if(ok==0)	cout<<a[r++]<<" ",ok=1;
			else	cout<<a[l--]<<" ",ok=0;
			if(r==n+1&&l==0)	break;
		}
		cout<<endl;
	}	
}

B. Sorted Adjacent Differences(思维构造)

原文:https://www.cnblogs.com/iss-ue/p/12823246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!