Cut

Cut

https://ac.nowcoder.com/acm/problem/14291

题解:
非常简单的一道贪心题目,题目想让你把一串子序列切割成长度为1的字串,每次切割的代价是被切割序列的总和,这样的话我们肯定是让序列中越大的数约往后切割,因为越大的数会对每次切割产生代价会越大,所以你是尽可能的想让这个数造成更大的代价,所以我们按照从小到大的顺序排序,之后从前往后切割就可以了。

#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 1e9 + 7;
using namespace std;
int a[maxn];
int main()
{
    int n;
    cin>>n;
    ll sum=0;
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    sort(a,a+n);
    ll ans=0;
    for(int i=0;i<n-1;i++){
       ans+=sum;
       sum-=a[i];
    }
    cout<<ans<<endl;
    return 0;

}
题解 文章被收录于专栏

主要写一些题目的题解

全部评论

相关推荐

03-31 16:42
已编辑
郑州西亚斯学院 后端
Java抽象带篮子:你简历少了几个模块看上去就感觉信息很少,简历怎么写可以看看我发的帖子
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务