CF1197C.Array Splitting

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a sorted array a1,a2,…,ana_1, a_2, \dots, a_n (for each index i>1i \gt 1 condition ai≥ai−1a_i \ge a_{i-1} holds) and an integer kk.

You are asked to divide this array into kk non-empty consecutive subarrays. Every element in the array should be included in exactly one subarray.

Let max(i)max(i) be equal to the maximum in the ii-th subarray, and min(i)min(i) be equal to the minimum in the ii-th subarray. The cost of division is equal to ∑i=1k(max(i)−min(i))\sum\limits_{i=1}^{k} (max(i) - min(i)). For example, if a=[2,4,5,5,8,11,19]a = [2, 4, 5, 5, 8, 11, 19] and we divide it into 33 subarrays in the following way: [2,4],[5,5],[8,11,19][2, 4], [5, 5], [8, 11, 19], then the cost of division is equal to (4−2)+(5−5)+(19−8)=13(4 - 2) + (5 - 5) + (19 - 8) = 13.

Calculate the minimum cost you can obtain by dividing the array aa into kk non-empty consecutive subarrays.

给你一个已排序的数组 a1,a2,…,ana_1, a_2, \dots, a_n(对每个下标 i>1i > 1,均满足 ai≥ai−1a_i \ge a_{i-1})以及一个整数 kk。

你需要将该数组划分为 kk 个非空且连续的子数组。数组中的每个元素必须且仅被包含在其中一个子数组中。

设 max(i)max(i) 表示第 ii 个子数组中的最大值,min(i)min(i) 表示第 ii 个子数组中的最小值。划分的代价定义为 ∑i=1k(max(i)−min(i))\sum\limits_{i=1}^{k} (max(i) - min(i))。例如,若 a=[2,4,5,5,8,11,19]a = [2, 4, 5, 5, 8, 11, 19],并将其划分为 33 个子数组:[2,4],[5,5],[8,11,19][2, 4], [5, 5], [8, 11, 19],则划分的代价为 (4−2)+(5−5)+(19−8)=13(4 - 2) + (5 - 5) + (19 - 8) = 13。

请计算将数组 aa 划分为 kk 个非空连续子数组所能得到的最小代价。

输入格式

The first line contains two integers nn and kk (1≤k≤n≤3⋅1051 \le k \le n \le 3 \cdot 10^5).

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n ($ 1 \le a_i \le 10^9$, ai≥ai−1a_i \ge a_{i-1}).

第一行包含两个整数 nn 和 kk(1≤k≤n≤3⋅1051 \le k \le n \le 3 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091 \le a_i \le 10^9,且 ai≥ai−1a_i \ge a_{i-1})。

输出格式

Print the minimum cost you can obtain by dividing the array aa into kk nonempty consecutive subarrays.

输出将数组 aa 划分为 kk 个非空连续子数组所能得到的最小代价。

输入输出样例

  • 输入#1

    6 3
    4 8 15 16 23 42

    输出#1

    12
  • 输入#2

    4 4
    1 3 3 7

    输出#2

    0
  • 输入#3

    8 1
    1 1 2 3 5 8 13 21

    输出#3

    20

说明/提示

In the first test we can divide array aa in the following way: [4,8,15,16],[23],[42][4, 8, 15, 16], [23], [42].

在第一个测试中,我们可以将数组 aa 按如下方式划分:[4,8,15,16],[23],[42][4, 8, 15, 16], [23], [42]。

输入解题思路,AI测评打分。不知道怎么写?

首页