题目来源:https://www.luogu.com.cn/problem/P4995
这个题其实就是一道挺简单的贪心算法,就是讲石头高度排一下序,然后从两头来回跳。
不过这里需要处理一些细节,就是青蛙从前往后和从后往前的两种跳跃,可以设置一个index在1和0之间转换,分别代表向前或者向后跳跃。一开始肯定是跳到最高的上面,然后在往最低的跳,再往第二高的跳,再往第二低的跳······就这样循环往复。
代码如下:
#include
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i>a[i];
}
sort(a,a+n);
long long ans=a[n-1]*a[n-1];
int i=0;
int j=n-1;
int index=1;
while(i<=j){
ans+=abs(a[j]-a[i])*abs(a[j]-a[i]);
if(index==1){
j--;
index=0;
}
else{
i++;
index=1;
}
}
cout<<ans;
system("pause");
return 0;
}