[UVA 1632]Alibaba[区间DP]

博客介绍了如何使用动态规划解决UVA 1632问题,即在宝藏消失前收集所有宝藏的最短时间。解题思路强调了连续区间选择的重要性,并详细说明了状态dp[l][r][2]的含义和状态转移方程。博主分享了个人重做此题的心得体会,加深了对动态规划的理解。
摘要由CSDN通过智能技术生成
题目链接: [UVA 1632]Alibaba[区间DP]

题意分析:

有n个宝藏,每个都在一个位置p[i],在规定的时间t[i]就会消失。阿里巴巴要在宝藏消失前收集齐所有宝藏,问:有方法吗?有的话最少多少秒?

解题思路:

嘛,取宝藏肯定是一个连续的区间都取掉,故意不拿绝对不是最优策略。所以整个策略就包括两种:向左走还是向右走。设状态为dp[l][r][2]。0代表阿里巴巴在左端点,1代表阿里巴巴在右端点。整个含义是:取到这一区间所需要的最少时间。下面来分析下转移,单独分析左端点(右端点类似),dp[l][r][0] = min(dp[l + 1][r][0] + p[l + 1] - p[l], dp[l + 1][r][1] + p[r] - p[l]);要么是由上个区间左边走过来的,要么是由上个区间右边走过来的。

正是由于dp[l][r][i]代表的是到达这个状态的时间,所以再更新了之后,比较一下更新之后的最小时间和规定时间,如果超过了,那么久赋值为INF。

由于更新时使用到了小区间的值,所以

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值