ACM HDU 1421 搬寝室
易证,对于四个数a1,a2,a3,a4存在a1<a2<a3<a4,最佳的情况为分两次拿a1a2和a3a4。
设一维数组a储存各个物品的重量,二维数组b使bij为前i个数中选j对数的最少体力值。
则存在以下公式:
b[i][j]=min{b[i-1][j],b[i-2][j-1]+(a[i]-a[i-1])²}.
其中,b[i-1][j]为不选第i个数时的力量消耗,b[i-2][j-1]+(a[i]-a[i-1])²则为选择第i个数的力量消耗,因为选择第i个数,所以为了使得力量消耗最少,必须选择第i-1个数。
转移方程都出来了,代码自然就很容易了——