nowcoder提高组四 灭虫

题意:3000个在数轴上的点,对于每个点可以选择这个点向左延伸li长度的线段,或者这个点向右延伸ri长度的线段,问选择的方法使得最终覆盖的数轴长度最长,输入均在int以内。

一个非常巧妙的DP题。
首先这一类题目有重复的线段长度统计(或者是树上的可以相交的路径方案统计)或者其他内容有一个比较自然的做法:
就是把每一段线段保留一段前缀或者后缀,将限制转化为最大值,然后要保证所有的线段不相交。
这个题首先就要利用这个思想。
然后我们按照pi(点的位置)从小到大排序DP,发现我们不能处理的只有 j < i L[i] < P[j] < P[i] < R[j] 的情况,我们发现这连成了一条完整的线段,我们直接把这个线段当作整体转移即可,可以证明,每一个这样的线段要么被直接转移到,要么左右端点由上面的线段确定。 所以这样的DP一定包含最优值。 利用前缀,后缀max维护一下可以做到 O(n^2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值