猴子

一只猴子想要从香蕉树上尽可能多地摘取香蕉,但只能跳跃且体力有限。问题转化为求解在给定跳跃距离和次数限制下,猴子最多能摘取多少香蕉。输入包括香蕉树数量、跳跃最大距离和跳跃次数,每棵树的香蕉数和距离。通过动态规划方法可以解决这个问题。
摘要由CSDN通过智能技术生成

Description

一个猴子找到了很多香蕉树,这些香蕉树都种在同一直线上,而猴子则在这排香蕉树的第一棵树上。这个猴子当然想吃尽量多的香蕉,但它又不想在地上走,而只想从一棵树跳到另一棵树上。同时猴子的体力也有限,它不能一次跳得太远或跳的次数太多。每当他跳到一棵树上,它就会把那棵树上的香蕉都吃了。那么它最多能吃多少个香蕉呢?

Input

输入第一行为三个整数,分别是香蕉树的棵数N,猴子每次跳跃的最大距离D,最多跳跃次数M。  下面N行每行包含两个整数,ai,bi,分别表示每棵香蕉树上的香蕉数,以及这棵树到猴子所在树的距离。输入保证这些树按照从近到远排列,并且没有两棵树在同一位置。b0总是为0。

Output

输出只有一行,包含一个整数,为猴子最多能吃到的香蕉数。

Sample Input

5 5 2
6 0
8 3
4 5
6 7
9 10

Sample Output

20

HINT

100%的数据有M<N<=2000,bi<=10000

Key To Problem

依旧是dp+单调队列优化。
f[i][j]表示的状态为在跳i次时跳到第j棵树最大可以获得的香蕉数量。
f[i][j]=max{f[i-1][k]}+a[j](b[j]-b[k]<=d);
单调队列维护单调递减区间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值