[编程题]美
  • 热度指数:445 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
最后,Sεlιнα(Selina) 开始了选美大赛。 一如既往地,Sεlιнα 想最大化自己的愉悦度。她品味十分独特,对“美”有自己独到的见解。 她给每位经过层层选拔来到这一关的参赛男友都定义了一个帅气值 Sεlιнα 需要将这些参赛者排成一排,她对于这个排列的“美”值的定义是: 

其中 表示排列中第 个人的帅气值。特别地,当 时,有
她依旧想使自己获得最大的愉悦值,所以她要使这个排列的 值尽可能地大。聪明的你,快来告诉 Sεlιнα,这个最大的值是多少。 

输入描述:
第一行一个整数 ,表示有 个男友。
第二行 个整数,第 个数表示值 。 


输出描述:
输出共一行,一个整数,表示最大的  值。 
示例1

输入

5
7 3 15 12 8

输出

34
示例2

输入

7
-2 0 8 9 -5 3 10

输出

68

备注:


头像 小男娘
发表于 2026-06-07 01:10:11
把绝对值符号全去掉发现每个值只会被统计 次且总和为零喵~于是把最大的一半用 2,最小的一半用 -2 就可以了喵~构造相应的方案也很简单喵~ #include <algorithm> #include <iostream> #include <numeric> # 展开全文
头像 小琢卷不动
发表于 2021-11-23 15:44:56
考虑直接对输入的序列 RRR 排序,然后 R1,Rn,R2,Rn−1,⋯R_1,R_n,R_2,R_{n-1},\cdotsR1​,Rn​,R2​,Rn−1​,⋯ 这样交替排列下去就好了。 考虑证明:(官方题解中好像没写明白哎)假如我们任意交换某两个 Ri,RjR_i,R_jRi​,Rj​,那么按照 展开全文
头像 唐手
发表于 2026-06-07 10:24:30
采取贪心的思维将数组排完序之后按大小大小大小的方式放使相邻值最大即可 #include <bits/stdc++.h> using namespace std; #define ll long long #define vi vector<int> #define um un 展开全文
头像 fair_Board
发表于 2026-06-07 10:52:46
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int n; cin>>n; vector<ll> a(n+1),b; 展开全文
头像 想取的名字都被取了
发表于 2026-06-07 12:29:39
#include <iostream> #include<algorithm> using namespace std; int a[100100]; int b[100100]; int main() { int n; cin>>n; f 展开全文

问题信息

难度:
2条回答 163浏览

热门推荐

通过挑战的用户

查看代码