洛谷:P4995 跳跳!

发布时间:2026/7/1 18:56:23

洛谷:P4995 跳跳! 题目描述你是一只小跳蛙你特别擅长在各种地方跳来跳去。这一天你和朋友小 F 一起出去玩耍的时候遇到了一堆高矮不同的石头其中第 i 块的石头高度为 hi​地面的高度是 h0​0。你估计着从第 i 块石头跳到第 j 块石头上耗费的体力值为 (hi​−hj​)2从地面跳到第 i 块石头耗费的体力值是 (hi​)2。为了给小 F 展现你超级跳的本领你决定跳到每个石头上各一次并最终停在任意一块石头上并且小跳蛙想耗费尽可能多的体力值。当然你只是一只小跳蛙你只会跳不知道怎么跳才能让本领更充分地展现。不过你有救啦小 F 给你递来了一个写着 AK 的电脑你可以使用计算机程序帮你解决这个问题万能的计算机会告诉你怎么跳。那就请你——会写代码的小跳蛙——写下这个程序为你 NOIp AK 踏出坚实的一步吧输入格式输入一行一个正整数 n表示石头个数。输入第二行 n 个正整数表示第 i 块石头的高度 hi​。输出格式输出一行一个正整数表示你可以耗费的体力值的最大值。输入输出样例输入 #1复制2 2 1输出 #1复制5输入 #2复制3 6 3 5输出 #2复制49说明/提示样例解释两个样例按照输入给定的顺序依次跳上去就可以得到最优方案之一。数据范围对于 1≤i≤n有 0hi​≤104且保证 hi​ 互不相同。对于 10% 的数据n≤3对于 20% 的数据n≤10对于 50% 的数据n≤20对于 80% 的数据n≤50对于 100% 的数据n≤300。题解#include iostreamusing namespace std;#include algorithmlong long jisuan(int a,int b){return 1LL*(a-b)*(a-b);}int main(){int n;cinn;int a[305];for(int i0;in;i){cina[i];}sort(a,an);long long sum0;int cur0;int l0,rn-1;while(lr){sumjisuan(cur,a[r]);cura[r];r--;if(lr){sumjisuan(cur,a[l]);cura[l];l;}}coutsumendl;system(pause);return 0;}

相关新闻