题目描述
北京大学的许多研究生都住在距离主校区燕园4.5公里的万柳校区。万流的学生不得不乘坐公共汽车或骑自行车上学。由于北京交通不畅,许多学生选择骑自行车。
我们可以假设除“查利”以外的所有学生都以固定的速度从万流到盐源。查理是一名具有不同骑行习惯的学生 - 他总是试图跟随另一名骑手来避免单独骑马。当查理走到万流的大门时,他会寻找一个正在出发到盐源的人。如果他找到某人,他会跟随那个骑手,或者如果没有,他会等待某人跟随。在从万柳到燕园的路上,任何时候如果一个更快的学生超过查理,他会随时离开他跟随的车手并加速追赶更快的车手。
我们假设查理进入万流门的时间为零。考虑到其他学生的出发时间和速度,你的任务是给Charley到达盐源的时间。
我们可以假设除“查利”以外的所有学生都以固定的速度从万流到盐源。查理是一名具有不同骑行习惯的学生 - 他总是试图跟随另一名骑手来避免单独骑马。当查理走到万流的大门时,他会寻找一个正在出发到盐源的人。如果他找到某人,他会跟随那个骑手,或者如果没有,他会等待某人跟随。在从万柳到燕园的路上,任何时候如果一个更快的学生超过查理,他会随时离开他跟随的车手并加速追赶更快的车手。
我们假设查理进入万流门的时间为零。考虑到其他学生的出发时间和速度,你的任务是给Charley到达盐源的时间。
输入
有几个测试用例。每种情况的第一行是N(1 <= N <= 10000),表示车手数量(不包括Charley)。N = 0结束输入。以下N行是N个不同车手的信息,格式如下:
Vi [TAB] Ti
Vi是一个小于等于40的正整数,表示第i位车手的速度(kph,公里/小时)。Ti是第i位骑手的起始时间,它是一个整数并以秒为单位计算。在任何情况下,总是存在一个非负Ti。
Vi [TAB] Ti
Vi是一个小于等于40的正整数,表示第i位车手的速度(kph,公里/小时)。Ti是第i位骑手的起始时间,它是一个整数并以秒为单位计算。在任何情况下,总是存在一个非负Ti。
输出
为每种情况输出一行:Charley的到达时间。在处理分数时收集(上限)价值。
样例输入
4
20 0
25 -155
27 190
30 240
2
21 0
22 34
0
样例输出
780
771
解题思路:这道题查理是永远追不上比他先离开的人,所以只需要考虑时间为正的情况
#include <iostream> #include <cmath> using namespace std; int main(){ int i=0,j=0; double n,t,t0,v,tt; while(cin>>n){ if(n==0) break; t=4.5*3600; for(j=0;j<n;j++){ cin>>v>>t0; if(t0<0) continue; tt=4.5/v*3600+t0; if(tt<t) t=tt; } cout<<ceil(t)<<endl; } return 0; }/* #include <iostream> #include <cmath> using namespace std; int main() { int t,i; double j,k; while(cin>>t,t!=0) { double a,b; j=4.5*3600; for(i=0;i<t;i++) { cin>>a>>b; if(b<0)continue; k=4.5/a*3600+b; if(k<=j) j=k; } cout<<ceil(j)<<endl; } return 0; }*/