CF1197C

CF1197C

Значение вопросов:

Приращение ряд колонн, она разделена на к секции, метод, чтобы найти такие сегменты, то есть каждый минимальный сегмент и максимальное значение минус минимальное

Решение:

В К секции, т.е. увеличить K-1 раздел, в котором разбиение к-1, может быть отделен от некоторых из крупнейших разницей, что последний минимальная разница максимальный период после каждого разделения и наименьшее

КОД:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>

using namespace std;

#define LL long long
const int N = 3e5 + 100;

int n,a[N],k;
vector<int> G;

int main() {
    scanf("%d%d",&n,&k);
    for(int i = 1 ; i <= n ; ++i)
        scanf("%d",&a[i]);
    for(int i = 2 ; i <= n ; ++i) 
        G.push_back(a[i - 1] - a[i]);
    sort(G.begin(), G.end());
    int ans = a[n] - a[1];
    for(int i = 0 ; i < k - 1 ; ++i) ans += G[i];
    printf("%d",ans);
    //system("pause");
    return 0;
}

рекомендация

отwww.cnblogs.com/Repulser/p/11427124.html