链接:https://www.nowcoder.com/acm/contest/86/J
来源:牛客网
题目描述
最后,Sεlιнα(Selina) 开始了选美大赛。 一如既往地,Sεlιнα 想最大化自己的愉悦度。她品味十分独特,对“美”有自己独到的见解。 她给每位经过层层选拔来到这一关的参赛男友都定义了一个帅气值
。Sεlιнα 需要将这些参赛者排成一排,她对于这个排列的“美”值的定义是:
其中
表示排列中第
个人的帅气值。特别地,当
时,有
。
她依旧想使自己获得最大的愉悦值,所以她要使这个排列的
值尽可能地大。聪明的你,快来告诉 Sεlιнα,这个最大的值是多少。
输入描述:
第一行一个整数
,表示有
个男友。
第二行
个整数,第
个数表示值
。
输出描述:
输出共一行,一个整数,表示最大的
值。
备注:
思路:
构造法,按照 最大数,最小数,次大数,次小数。。。。k大数,k小数 构造序列
构造法,按照 最大数,最小数,次大数,次小数。。。。k大数,k小数 构造序列
AC码:
1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 using namespace std; 5 int a[100010]; 6 int p[100010]; 7 int main() 8 { 9 int n;cin>>n; 10 for(int i=0;i<n;i++)cin>>a[i]; 11 sort(a,a+n); 12 int pn=0; 13 int i=n-1,j=0; 14 while(j<i){ 15 p[pn++]=a[i--]; 16 p[pn++]=a[j++]; 17 } 18 p[pn++]=a[i]; 19 long long ans=0; 20 ans+=abs(p[0]-p[n-1]); 21 for(int i=1;i<n;i++){ 22 ans+=abs(p[i]-p[i-1]); 23 } 24 cout<<ans<<endl; 25 return 0; 26 }