洛谷P4995 贪心

偶尔善良 提交于 2020-04-05 19:39:09

题目链接 https://www.luogu.com.cn/problem/P4995

分析

你说他是个水题吧,贪心思想又挺好,你说它不水吧,它的确挺水。
因为让求总和最大所以直接贪心,每次取排序后两端的就好,然后我就写了个谜一般的双指针,最后要记录一下\(last\)因为最后一次跳的时候不会记录上,然后就没啥了,感觉这个思想还是要好好体会的。

\(longlong!!!!!\)

#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e3+10;
ll a[N];
int main(){
    int n;
    ll ans=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    ans+=a[n]*a[n];
    int i=1,j=n,cnt=1,last=a[n];
    while(i!=j){
        ans+=(a[i]-a[j])*(a[i]-a[j]);
        if(cnt)last=a[i],j--;
        else last=a[j],i++;
        cnt^=1;
    }
    ans+=(a[i]-last)*(a[i]-last);    
    cout<<ans;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!