USACO Farmer_John收苹果 (dp)

这道题目描述了Farmer John如何在限定时间内接住最多的小苹果,根据苹果的落下位置和时间,以及农夫的移动速度进行动态规划求解。输入包括苹果数量和农夫速度,输出为最多能接住的苹果数。样例给出了5个苹果的位置和时间,以及农夫的速度,答案为3个苹果。状态转移方程为f[i]=max(f[j])+1,用于找出最佳路径。

题目描述
农场的夏季是收获的好季节。在Farmer John的农场,他们用一种特别的方式来收小苹果:Bessie摇小苹果树,小苹果落下,然后Farmer John尽力接到尽可能多的小苹果。

  作为一个有经验的农夫,Farmer John将这个过程坐标化。他清楚地知道什么时候(1<=t<=1,000,000)什么位置(用二维坐标表示,-1000<=x,y<=1000)会有小苹果落下。他只有提前到达那个位置,才能接到那个位置掉下的小苹果。

  一个单位时间,Farmer John能走s(1<=s<=1000)个单位。假设他开始时(t=0)站在(0,0)点,他最多能接到多少个小苹果?

  Farmer John 在接小苹果时,从某个点到另外一点按照直线来走。

输入格式
第一行:N(小苹果个数)和S(速度)

第2..N+1行:每行三个数Xi,Yi,Ti,表示每个小苹果掉下的位置和落下的时间。

输出格式
仅一行,一个数,表示最多能接到几个小苹果

样例数据

input
5 3
0 0 1
0 3 2
-5 12 6
-1 0 3
-1 1 2

output
3

f[i]表示第i个苹果一定要接的情况下,前i个苹果中最多能接到的。
状态转移方程:f[i]=max(f[j])+1; 1<=j<=i&&时间足够从j到i。

bool mycmp(apple a,apple b)
{
    return(a.t<b.t);
}//掉落时间排序。 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值