题目要求最大代价,而代价是分割前的序列数字和,显然每次分离出最小的数,最后得到的代价最大。
需要注意的是,最后的结果可能会爆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; }
谢谢阅读!
祝你学习愉快!