您的位置:首页 > 其它

记忆化搜索之拍卖

2017-10-26 20:41 162 查看

先上题


题目描述

一般情况下,XXX拍卖行的拍卖师在拍卖商品的时候都是从低价开始起拍,由买方报价,最后谁出的价格高,商品就归谁所有。但海亮(大监狱)有个拍卖行,拍卖师(hjy)在拍卖商品时正好相反:总是从高价开始起拍,如果没有人举成交牌就降价(因为他是
       ),而且拍卖师在降价时还有规律:假如第i次报价为w元,那么第i+1次报价为w-a或者w-b元,如果降到p元时,你认为价格合适,赶快第一个举成交牌,你就花p元买下了商品。

任务:拍卖师把商品从w元降到p元的方法总数。


输入格式

文件第一行有两个正整w 和p ,第二行有有两个正整a 和b. 1 ≤ w,p ≤ 10^6  , 2 ≤ a,b ≤ 10000, a不等于b.


输出格式

文件只有一行,即所求得的方法总数。注意:测试数据中方法总数不超过MAXlongint.


样例数据

input
10  3
2  3


output
3


这道题目是一道辉常简单的递归题,不需要花太多的时间就可以写出递归程序,但这时,就会惊奇的发现(                  )

Tle了(没错我就是这样。。。。。。太尬了)

这时候,一个伟大的算法出现在我的电脑上————记忆化搜索                                  (好吧我搜了)

记忆化搜索是一个绝妙的东西,众所皆知,就是空间换时间。

用朴素的说法,就是用数组来存储已经在递归中出现过的值,如果值再次出现,就直接返回该值所在层的上一层,不再继续往下深入,避免重复搜索浪费时间。(记住浪费时间就是浪费生命)

用偷来的图的搞一下子

                                                                           

                                                                           

                                                                           

                                                                           

                                                                            

尴尬找不到

自己画一张吧(画图走起




(纯手绘)

这张图数据有点小,不能很好的说明jyhss有什么用,但当数据量达到一定值后(比如说10^6或更大)就可以很清楚的发现,完全相同的递归结果重复出现了几十次乃至上万次,这样的话,不必要的搜索所花费的时间可以达到整个程序的一半以上,用程序实践可以明了的看到。




(前是用了jyhss,后是纯递归)

用了jyhss的程序耗时极短,而不用的话所用的时间是成几何倍数增加的。虽然占用的空间增加了不少,但比起可能引起会Tle的时间,我选择占用更多的空间。

好了,继续去刷递归,等待老夫下一篇bg。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: