【算法】反悔贪心 总结

反悔问题

贪心不能反悔,因为贪心是全局最优解。

但是我们可以在贪心的条件上加上反悔的操作。

如果这一步的贪心不是最优解,我们就退回去一步,重新换一种贪心策略。

反悔自动机

设计一种反悔策略,使得随便一种贪心策略都可以得到正解。

基本的设计思路是:每次选择直观上最接近全局最优解的贪心策略,若发现最优解不对,就想办法自动支持反悔策略。

CF865D Buy Low Sell High

已知接下来N天的股票价格,每天你可以买进一股股票,卖出一股股票,或者什么也不做.N天之后你拥有的股票应为0,当然,希望这N天内能够赚足够多的钱。

分析:

这是一个非常经典、实用的问题。我们要考虑的是挑哪个时间段销售股票的权值最大,同时在这个区间内有三种操作。

我们可以想到一种策略:我们可以买入最低价格的股票,然后在可以赚钱的天数卖出去。

但是上述肯定是错误的。这样可以保证赚钱,但是无法保证赚的钱最多。

我们考虑设计一种反悔策略,使所有的贪心情况都可以得到全局最优解。

S B u y S_{Buy} SBuy为全局最优解中买入当天的价格, S S e l l S_{Sell} SSell为全局最优解中卖出当天的股票的价格, S i S_i Si为第 i i i天的股票价格

则可以列出式子: S s e l l − S b u y = (

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值