思路

贪心

从大到小排序,然后反复横跳,记录两个指针 \(l=1, r=n\),从 \(1\) 跳到 \(n\),再从 \(n\) 跳到 \(2\),然后从 \(2\) 跳到 \(n - 1\)……,直到 \(l=r\) 结束,很容易证明这是正确的,因为每个位置的值互不相同且大于 \(0\),所以要尽量使每次跳的差值最大,这样就能够保证获得的值最大

严谨的证明可以看这里:here

代码

/*
Name: P4995 跳跳!
Author: Loceaner
Date: 31/08/20 20:14
Description: 排序,然后反复横跳
*/
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define int long long
using namespace std; const int A = 1e5 + 11;
const int B = 1e6 + 11;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f; inline int read() {
char c = getchar();
int x = 0, f = 1;
for ( ; !isdigit(c); c = getchar()) if (c == '-') f = -1;
for ( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
return x * f;
} int n, a[A], ans; bool cmp(int x, int y) {
return x > y;
} signed main() {
n = read();
for (int i = 1; i <= n; i++) a[i] = read();
sort(a + 1, a + 1 + n, cmp);
ans += a[1] * a[1];
int l = 1, r = n, flag = 0;
while (l < r) {
if (!flag) {
ans += (a[l] - a[r]) * (a[l] - a[r]);
l++;
flag = 1;
}
else {
ans += (a[l] - a[r]) * (a[l] - a[r]);
r--;
flag = 0;
}
}
cout << ans << '\n';
return 0;
}

最新文章

  1. CodeForces 548
  2. mono的https使用使用事项
  3. SQL Server日期时间格式转换字符串详解
  4. javascript summary
  5. HUD 2444 The Accomodation of Students (二分图染色+最大匹配)
  6. Maven之(一)Maven是什么
  7. 3553: [Shoi2014]三叉神经树(树链剖分)
  8. 分享一个markdownpad2的授权key
  9. Docker学习笔记 - Docker部署nginx网站
  10. SharePoint 2013 新特性 (三) 破改式 &mdash;&mdash; 设计管理器的使用 [1.设备通道]
  11. 支付宝 app支付 沙盘使用
  12. 为你详解Linux安装GCC方法
  13. 微软开放 6 万项 Linux 专利,有哪些是我们该注意的?
  14. 【2017-03-23】CSS基础:内联样式
  15. legend2---开发日志4(常用的链接传值方式有哪些)
  16. Spark记录-Scala数组
  17. C语言程序设计--宏和预处理
  18. [redis] redis 如何删除匹配模式的多个key值
  19. JS获取地址栏参数&amp;jquery
  20. Codeforces Round #416 (Div. 2) A+B

热门文章

  1. P4463 [集训队互测2012] calc 拉格朗日插值 dp 多项式分析
  2. MapReduce之GroupingComparator分组(辅助排序、二次排序)
  3. 什么是Cookie、Session、Token?
  4. day3. 六大标准数据类型的类型转换
  5. MemoryMappedFile的初级应用
  6. Ubuntu环境下使用Jupyter Notebook查找桌面.csv文档的方法
  7. slots属性(省内存,限制属性的定义)
  8. Java入门到实践系列(1)——Java简介
  9. python3.2求和与最值
  10. Java实现邮箱验证码