【题解】Ride to Office

题目描述

         起点与终点相隔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

题解

        容易想到,你在中途去跟另一个人,就是就相当于从起点到终点都一直跟那个人,那直接输入后算到达终点的时间,取最小值即可。

        (提醒,这题的$v$单位是$km/h$)

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int n;
int t;
double v;
int ans;

int main()
{
    int tmp;
    while(scanf("%d", &n) && n)
    {
        ans = 0x7f7f7f7f;
        while(n--)
        {
            scanf("%lf%d", &v, &t);
            if(t < 0) continue;
            ans = min(ans, (int)ceil(4500.0 / (v / 3.6)) + t);
        }
        cout << ans << "\n";
    }
    return 0;
}
参考程序

猜你喜欢

转载自www.cnblogs.com/kcn999/p/10925559.html