#P2852. USACO(107)动态规划一8:打扫食槽P2943 [USACO09MAR] Cleaning Up G

USACO(107)动态规划一8:打扫食槽P2943 [USACO09MAR] Cleaning Up G

Description


【题意】
牧场里有 $N$ 头奶牛,约翰向它们提供 $M$ 种食物,第 $i$ 头奶牛吃的是第 $A_i$ 种食物。约翰每天都要打扫食槽,这活很累。
奶牛沿着食槽排成一条直线,约翰在打扫时,可以将食槽分割成几个区间,
如果一段区间中有 $K$ 种不同的食物,那么打扫这段区间的时间就是 $K^2$。请问约翰应该怎么划分区间才能使打扫整个食槽的时间之和最少。

【输入格式】
• 第一行:两个整数 $N$ 和 $M$,$1  \le M  \le N  \le 40000$
• 第二行到第 $N + 1$ 行:第 $i + 1$ 行有一个整数 $Ai$,$1  \le A_i  \le M$

【输出格式】
• 单个整数:表示约翰完成打扫的最短时间

【样例输入】
13 4
1
2
1
3
2
2
3
4
3
4
3
1
4

【样例输出】
11

【解释】
前四头各成一段,第五段两个 2,第六段为3, 4, 3, 4, 3,最后两头各成一段,1 × 4 + 1 + 4 +1 × 2 = 11