首先,我们要注意到一点,如果某个等级i的珠宝用比它等级高的珠宝j代替会产生最优解,那么处于等级[i+1,j-1]区间内的珠宝也必须用珠宝j代替
证明如下:
假设区间[i+1,j-1]内存在等级k的珠宝不用等级为j的珠宝代替,因为必定会买等级j的珠宝,那么它的可选范围就是[k,j-1]
如果它选择就买等级x的,那么等级i的珠宝用等级x的代替就可以,因为等级越高,价格越高,这样的代价必定更小,于是产生了矛盾
于是对于等级i,只要枚举它前面连续几个等级的珠宝选择用它代替即好
dp[i]=min(dp[i],dp[j]+(sum(j+1...i))+10)*p[i])
代码: