标签:lfloor 连边 Lonely 101224 chain 题解 rfloor dfrac
题意
重排数组,使得相邻两数之差绝对值的最小值尽可能大。\(n\leq 10^5\)
题解
排序,为了方便表述考虑连边。如果某条边的跨度不足 \(\lfloor \dfrac{n}{2}\rfloor\),我们可以通过调整覆盖它的某条边(变为交叉)来使答案不减。因此我们要连边使得每条边跨度都有 \(\lfloor \dfrac{n}{2}\rfloor\)。对于偶数这会连成一条链,对于奇数这会连成一个环,选一条边断掉即可。
from itertools import chain
input()
a=sorted([int(i) for i in input().split()])
n=len(a)
a=list(chain(*zip(a[n//2:],a[:n//2])))+([a[-1]]if n&1 else[])
q=n%2*min(range(n),key=lambda x:abs(a[x]-a[x-1]))
print(' '.join(str(i)for i in a[q:]+a[:q]))
花絮:搬题人只造了 \(n\) 为偶数的数据。
标签:lfloor,连边,Lonely,101224,chain,题解,rfloor,dfrac 来源: https://www.cnblogs.com/wallbreaker5th/p/15358049.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。