很明显这道题就是一道贪心,每次切那个数值最小的就行,所以可以用sort对输入进行排序,然后每次切割前加上还剩下的数值和,直到全部分割开。
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int a[100005];
int main(){
int n;
long long sum=0,sum1=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum1+=a[i];
}//输入数据
sort(a+1,a+n+1);//排序
for(int i=1;i<n;i++){
sum+=sum1;//每次切割前加上剩余数值
sum1-=a[i];
}
cout<<sum;
return 0;
}


京公网安备 11010502036488号