热门推荐
天河商城网站建设/优化大师下载安装app
2024-12-16 15:30

大致题意

给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。

【规定买任一类的珍珠个(价格为),都要支付的钱,即额外支付】

例如样例Input的第二个例子

3

1 10

1 11

100 12

需要买第一类1个,第二类1个,第三类100个

按常规支付为 (1+10)*10 + (1+10)*11 + (100+10)*12 = 1551元(一共买了102个珍珠

但是如果全部都按照第三类珍珠的价格支付,同样是买102个,而且其中总体质量还被提高了,但是价格却下降了:(102+10)*12 = 1344元

而对于样例Input的第一个例子

2

100 1

100 2

按常规支付为 (100+10)*1 + (100+10)*2 =330元

但是全部按第二类珍珠的价格支付,同样买200个,虽然总体质量提升了,但是价格也提高了: (202+10)*2=424元

一开始想过从头到尾遍历珍珠的价格和数目,每次都看相临的两个,如果把当前这一批放入下一个等级价格降低,则将他放到下一个等级,否则直接算在当前等级的买的价格加到答案中,最后一等后设置最大值,保证不会再向后放.,但是这样的思路其实是错误的,以下是证明

价格
假设贪心得出和两个前提
但是对于即不采取归并更小的情况是否存在呢
化简式子

对比条件,我们知道

完全可以有

所以贪心策略是错的

首先证明最优解中肯定不会有交叉的替,即在质量为a<b<j<c<d的情况下,如果a被c替换,那么b也一定要被c替换 假设在最优解中存在:a被c替换且b不被c替换的情况

1.b不被任何替换 那么此时把a换成用b替换 得到比原来更优的解,错误
2.b被j替换,此时把a换成用j替换 得到比原来更优的解,错误
3.b被d替换,此时把b换成用c替换 得到比原来更优的解,错误

因此,不存在交叉的替换,那么最优解分为下面两种情况
1.不存在断点,即所有的都用最大一种替换,
2.存在断点,最后一个断点为i,那么最优解必为

每个点都有可能是最后一个断点,因此产生了我们的DP方程:

把dp[0]设成0的话 2就包含了1 dp[c]就是最后的答案

有点像最长上升子序列的问题

    以上就是本篇文章【天河商城网站建设/优化大师下载安装app】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/quote/4608.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多