CF1527E.Partition Game
省选/NOI-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array a of n integers. Define the cost of some array t as follows:
cost(t)=sum_xinset(t)last(x)−first(x),
where set(t) is the set of all values in t without repetitions, first(x), and last(x) are the indices of the first and last occurrence of x in t, respectively. In other words, we compute the distance between the first and last occurrences for each distinct element and sum them up.
You need to split the array a into k consecutive segments such that each element of a belongs to exactly one segment and the sum of the cost of individual segments is minimum.
给你一个包含 n 个整数的数组 a。定义某个数组 t 的代价如下:
cost(t)=∑_x∈set(t)last(x)−first(x),
其中 set(t) 表示数组 t 中所有不同元素构成的集合,first(x) 和 last(x) 分别表示元素 x 在 t 中首次出现和末次出现的下标(从 1 开始计数)。换言之,我们对每个不同元素计算其首次与末次出现位置之间的距离,并将所有这些距离求和。
你需要将数组 a 划分为 k 个连续的子数组(段),使得 a 中的每个元素恰好属于其中一个段,且各段的代价之和最小。
输入格式
The first line contains two integers n, k (1≤n≤35000, 1≤k≤min(n,100)).
The second line contains n integers a1,a2,…,an (1≤ai≤n).
第一行包含两个整数 n、k(1≤n≤35000,1≤k≤min(n,100))。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)。
输出格式
Output the minimum sum of the cost of individual segments.
输出各段成本的最小总和。
输入输出样例
输入#1
7 2 1 6 6 4 6 6 6
输出#1
3
输入#2
7 4 5 5 5 5 2 3 3
输出#2
1
说明/提示
In the first example, we can divide the array into [1,6,6,4] and [6,6,6]. Cost of [1,6,6,4] will be (1−1)+(3−2)+(4−4)=1 and cost of [6,6,6] will be 3−1=2. Total cost would be 1+2=3.
In the second example, divide the array into [5,5],[5],[5,2,3] and [3]. Total Cost would be 1+0+0+0=1.
在第一个例子中,我们可以将数组划分为 [1,6,6,4] 和 [6,6,6]。[1,6,6,4] 的代价为 (1−1)+(3−2)+(4−4)=1,而 [6,6,6] 的代价为 3−1=2。总代价为 1+2=3。
在第二个例子中,将数组划分为 [5,5]、[5]、[5,2,3] 和 [3]。总代价为 1+0+0+0=1。
输入解题思路,AI测评打分。不知道怎么写?