博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSL 1637——苹果
阅读量:4647 次
发布时间:2019-06-09

本文共 1666 字,大约阅读时间需要 5 分钟。

Description

  农场的夏季是收获的好季节。在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)点,他最多能接到多少个苹果?

Input

第一行:两个整数,N(苹果个数,n<=5000)和S(速度);

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

Output

仅一行,一个数,表示最多能接到几个苹果

Sample Input

5 3

0 0 1
0 3 2
-5 12 6
-1 0 3
-1 1 2
Sample Output

3 (Farmer John可以接到第1,5,4个苹果)


思路

先将苹果下落的时间从小到大排序
然后用dis(i,j)表示两点之间的距离为sqrt(sqr(x1-x2)+sqr(y1-y2))
如果从第i个苹果到第j个苹果所用的时间小于他的速度*(第i个苹果下落的时间-第j个苹果下落的时间),就f[i]:=max(f[i],f[j]+1)


代码如下:

const maxapp=5000;type as=record     x,y,time:longint;end;var f:array [0..maxapp] of longint;    app:array[0..maxapp] of as;    n,s:longint;    i,j,ans:longint;    m:real;procedure init;var i,j,k:longint;begin   readln(n,s);   for i:=1 to n do     readln(app[i].x,app[i].y,app[i].time);   app[0].x:=0; app[0].y:=0; app[0].time:=0;end;procedure qsort(l,r: longint);var i,j,x: longint;    tmp:as;begin     i:=l;     j:=r;     x:=app[(l+r) div 2].time;     repeat           while app[i].time
j) then begin tmp:=app[i]; app[i]:=app[j]; app[j]:=tmp; inc(i); j:=j-1; end; until i>j; if l
0)and(f[j]<>0)) then begin m:=dis(i,j); if ( m<=s*(app[i].time-app[j].time) )and( f[j]+1>f[i] ) then f[i]:=f[j]+1; end; if f[i]>ans then ans:=f[i]; end; write(ans);end.

转载于:https://www.cnblogs.com/Comfortable/p/8412375.html

你可能感兴趣的文章
【每天学一点Linux】快速清除文件内容
查看>>
Myeclipse中易混淆的单词
查看>>
域账号修改后,导致vs中的git连接失败
查看>>
【数论】bzoj1477 青蛙的约会
查看>>
Vue学习
查看>>
redis集群结构图
查看>>
是用CXF开发Web Service
查看>>
python 作用域
查看>>
ajaxSetup()方法
查看>>
spring替代方法
查看>>
Storm入门1-基本概念
查看>>
跳槽指南(5) - 各类公司的利弊[完结]
查看>>
HDU - 2612 - Find a way (BFS)
查看>>
My sql 实用教程
查看>>
常用系统性能分析工具
查看>>
蓝桥杯 矩阵乘法 模板
查看>>
iOS_SourceTree忽略CocoaPods文件
查看>>
Unity编程标准导引-3.4 Unity中的对象池
查看>>
SETUP基础知识
查看>>
cocosstudio csd文件解析为.lua
查看>>