记忆化搜索之拍卖

先上题

题目描述

一般情况下,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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值