zoukankan      html  css  js  c++  java
  • CodeForces.1174D.ArraySplitting.(后缀和数组 + 贪心)

      题目链接

    参考代码:

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    typedef long long ll;
    const int maxn = 300000 + 5;
    int n, k;
    ll ans = 0, value[maxn];
    
    bool cmp(const ll  &a, const ll  &b) {
        return a > b;
    }
    
    int main() {
        scanf("%d %d", &n, &k);
        for(int i = 1; i <= n; i ++) scanf("%I64d", &value[i]);
        for(int i = n; i; i --) value[i] += value[i + 1];//构造value后n项和的后缀和数组
        sort(value + 2, value + n + 1, cmp);//对后n - 1项进行排序,因为第后n项和是必须要加的
        for(int i = 1; i <= k; i ++) ans += value[i];//选取其中最大的n - 1项和第一项即可,就可以实现将所选的数字加k次
        printf("%I64d
    ", ans);
        return 0;
    }
  • 相关阅读:
    mysql基础(三)
    mysql基础(二)
    Mysql基础(一)
    Less32-Less-33
    Less-27
    Less-26
    Less-25
    Less-23
    Less18-Less19
    Less13-Less-14
  • 原文地址:https://www.cnblogs.com/bianjunting/p/10986829.html
Copyright © 2011-2022 走看看