P4995 跳跳!
程序员文章站
2024-01-08 11:52:34
...
咋一看还以为是dp。。。仔细看原来是贪心,不停的选择高度差最大的跳就好了,直到跳完所有的石头为止~下面是AC代码
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long int ll;
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
a[0]=0;
ll sum=0;
if(n%2==0)
{
for(int i=0;i<=n/2-1;i++)
{
sum+=pow(a[n-i]-a[i],2);
sum+=pow(a[n-i]-a[i+1],2);
}
}
else
{
for(int i=0;i<=n/2;i++)
{
sum+=pow(a[n-i]-a[i],2);
if(i<=n/2-1)
{
sum+=pow(a[n-i]-a[i+1],2);
}
}
}
cout<<sum<<endl;
return 0;
}