1227:Ride to Office
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 2778 通过数: 1607
【题目描述】
起点与终点相隔4500米。现Charley需要从起点骑车到终点。但是,他有个习惯,沿途需要有人陪伴,即以相同的速度,与另外一个人一起骑。而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上这个更快的人。先给定所有与Charley同路的人各自的速度与出发时间,问Charley以这种方式跟人,骑完4500米需要多少时间。得出的结果若是小数,则向上取整。
【输入】
输入若干组数据,每组数据第一行n(1≤n≤10000),n为0,表示输入结束,接着输入n行数据,每行2个数据,表示速度v和出发时间t,如果t<0,表示陪伴人提早出发了。
【输出】
输出对应若干行数据,每行输出1个数,表示最快到达的时间。
【输入样例】
4
20 0
25 -155
27 190
30 240
2
21 0
22 34
0
【输出样例】
780
771
【来源】
No
刚一看,两眼发蒙,额,脑子疼。
但是,如果追上了先出发的人,则先出发的人速度慢,不必跟随,如果追不上,也与其没有关系。如果跟随后出发的人被后后出发的人追上,就跟随后后出发的人,那么后后出发的人走过相同的路程相比后出发的人走过相同的路程所节省的时间恰好等于其出发时间相较与后出发的人的出发时间所延迟的时间。即相当于一开始就跟随后后出发的人所花费的时间。
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
int a;
int b;
double ttime;
while(cin>>n)
{
if(n==0) return 0;
int ans=10000000;
for(int i=1;i<=n;i++)
{
cin>>a>>b;
if(b<0) continue;
ttime=ceil((4500/(a*1.0/3.6))+b);
if(ans>ttime) ans=ttime;
}
cout<<ans<<endl;
}
return 0;
}