#CF1527E. 分组游戏

分组游戏

分组游戏

  • 时间限制:3 秒
  • 内存限制:256 MiB

题目描述

给定长度为 nn 的整数数组 aa。对任意非空数组 tt,定义

$$\operatorname{cost}(t)=\sum_{x\in\operatorname{set}(t)}(\operatorname{last}(x)-\operatorname{first}(x)),$$

其中 first⁡(x)\operatorname{first}(x) 和 last⁡(x)\operatorname{last}(x) 分别是 xx 在 tt 中第一次和最后一次出现的位置。

请把 aa 恰好划分成 kk 个连续非空段,使所有段的代价之和最小。

输入格式

第一行包含两个整数 n,kn,k。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

输出一个整数,表示最小总代价。

样例输入 1

7 2
1 6 6 4 6 6 6

样例输出 1

3

样例输入 2

7 4
5 5 5 5 2 3 3

样例输出 2

1

数据范围

对于所有数据,1≤n≤350001\le n\le35000,1≤k≤min⁡(n,100)1\le k\le\min(n,100),1≤ai≤n1\le a_i\le n。

子任务编号 分值 特殊限制
1 30 n≤18n\le18,k≤6k\le6
2 n≤1000n\le1000,k≤30k\le30
3 40 无特殊限制