题意:现在要买若干种价值的珍珠,但买某种珍珠必须多付10颗此种珍珠的价钱,一颗珍珠可以用比它贵的珍珠充数,因此有时候用贵的珍珠来代替便宜的可能更省钱,输入要买的若干种珍珠,在可用高价珍珠充数的条件下,问最少需要花费多少钱.
假设有价值从x……y的珍珠,则在购买最大价值为z(x 所以可以得到状态转移方程为:
res[i]=min{res[i],(num[i]-num[j]+10)*p[i]+res[j]}
其中j
由状态转移方程我们发现如果合并,则其是连续性的,必定不会出现交叉合并。比如假设有a,b,c,d,e五种珠宝,分别价值A,B,C,D,E, 不会出现a能合成到c,b能合并到d而不能合成到c等交叉合并的情况。证明大家可以自己试试,另外个人感觉dp的计算如果是按题模拟搜索计算了所有情况,则其正确性是不会有问题的,因为这就是暴力穷举了。。。
做人厚道啊,转载请注明出处:三江小渡的博客