#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