当前位置: 代码迷 >> 综合 >> NOWCODER Cut(贪心)
  详细解决方案

NOWCODER Cut(贪心)

热度:0   发布时间:2024-02-21 02:58:04.0

链接: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;
}
  相关解决方案