#U672599. 子段划分
子段划分
子段划分
- 时间限制:1 秒
- 内存限制:512 MiB
题目描述
给定一个长度为 的正整数序列 ,需要将该序列划分成恰好 个连续非空子段。
一个子段的费用等于其中数值相同的元素对数。具体地,若数值 在该子段中出现 次,则它对费用的贡献为 ;子段总费用为所有不同数值贡献之和。
请最小化这 个子段的费用之和,并输出最小值。
输入格式
第一行包含两个整数 。
第二行包含 个整数 。
输出格式
输出一个整数,表示最小费用和。
样例输入 1
8 2
2 3 2 8 1 2 3 1
样例输出 1
1
样例输入 2
15 3
1 2 3 2 1 2 1 2 2 1 2 3 1 2 1
样例输出 2
8
样例输入 3
20 4
1 2 3 9 8 2 7 1 2 3 3 2 8 9 1 2 3 3 2 1
样例输出 3
3
数据范围
对于所有测试数据,保证 ,,。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 20 | |
| 2 | ||
| 3 | ||
| 4 | 40 | 无特殊限制 |