洛谷P4995 贪心

题目链接 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;
}

猜你喜欢

转载自www.cnblogs.com/anyixing-fly/p/12634453.html
今日推荐