CodeForces.1174D.ArraySplitting.(後綴和數組 + 貪心)

  題目連接數組

參考代碼:spa

#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\n", ans);
    return 0;
}
相關文章
相關標籤/搜索