题目要求最大代价,而代价是分割前的序列数字和,显然每次分离出最小的数,最后得到的代价最大。
需要注意的是,最后的结果可能会爆int,所以用long long存答案。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 100000+10;
int main()
{
int n,a[maxn];
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
ll ans=0;
for(int i=1;i<=n;i++)
{
ans+=a[i]*i;
}
ans-=a[n];
cout<<ans<<endl;
return 0;
}谢谢阅读!
祝你学习愉快!



京公网安备 11010502036488号