题目大意
将N个数分成M部分,使每部分的最大值与最小值平方差的和最小。
思路
首先肯定要将数列排序,每部分一定是取连续的一段,于是就有了方程
$\Large f(i,j)=min(f(i-1,k-1)+(a_j-a_k)^2)$
其中$f(i,j)$表示前$j$个数分成$i$部分的最小值
解法一.四边形不等式优化
设$w(i,j)=(a_j-a_i)^2$
方程变为$f(i,j)=min(f(i-1,k-1)+w(k,j))$
很容易想到四边形不等式优化
证明w满足四边形不等式
$w(i,j)-w(i+1,j)=(a_j-a_i)^2-(a_j-a_{i+1})^2=a_i^2-a_{i+1}^2+2*a_j*(a_{i+1}-a_i)$
因为$a_{i+1}-a_i\ge 0$
所以$w(i,j)-w(i+1,j)$关于j单调不减,即$w(i,j)-w(i+1,j)\le w(i,j+1)-w(i+1,j+1)$
所以$w(i,j)+w(i+1,j+1)\le w(i,j+1)+w(i+1,j)$