链接:https://ac.nowcoder.com/acm/problem/14291
来源:牛客网
题意:
把长度为n的序列分割成长度为1的子序列,分割的代价是分割前原序列的总和,求分割完成后最大总代价
思路:
每次分割后保证剩下的序列和最大,也就是下一次分割花费最大,排序后每次分割出最小的那个元素就行
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
ll n,a[maxn],sum=0,ans=0;
int main(){cin>>n;for(int i=0;i<n;i++) cin>>a[i],sum+=a[i];sort(a,a+n);for(int i=0;i<n-1;i++) ans+=sum,sum-=a[i];cout<<ans<<endl;
}