当前位置:首页 > 题解目录 > 正文内容

【题解】Ride to Office

亿万年的星光1年前 (2025-02-14)题解目录1561

【题目描述】

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

【题目分析】


题目比较坑的一点是速度的单位问题,常见的速度单位是m/s或者是km/h
如果 Charley 的速度是 20 m/s,则骑行 4500 米所需时间为 225 秒,与样例输出不符。

如果 Charley 的速度是 20 km/h(约 5.556 m/s),则骑行 4500 米所需时间约为 810 秒,接近样例输出


所以要进行相应的转换,

基于贪心思路:

  1. 理解题意

    • Charley 需要从起点骑车到终点,距离为4500米。

    • 他需要有人陪伴,且会跟随速度更快的人。

    • 给定n个陪伴者的速度和出发时间,计算Charley完成4500米所需的时间。

  2. 关键点

    • Charley的速度会跟随最快的人。

    • 陪伴者的出发时间可能早于或晚于Charley的出发时间。

    • 计算Charley到达终点的时间,需要考虑所有陪伴者的影响。

  3. 算法步骤

    • 对于每个陪伴者,计算他们到达终点的时间。

    • Charley的到达时间取决于最快陪伴者的到达时间。

    • 遍历所有陪伴者,找到最快到达时间。

【参考答案】

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    int n;
    while (cin >> n && n != 0) {
        int minTime = 1e9;
        for (int i = 0; i < n; ++i) {
            int v, t;
            cin >> v >> t;
            if (v <= 0) continue; // 速度必须大于0
            // 计算到达时间
            if(t>=0){
                double time = ceil((4.5/v*3600) +t);  //注意速度单位
            if (time < minTime) {
                minTime = time;
            }
            }
        
        }
        cout << minTime << endl;
    }
    return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】使每位学生都有座位的最少移动次数

    【题目描述】一个房间里有 n 个 空闲 座位和 n 名 站着的 学生,房间用一个数轴表示。给你一个长度为 n&...

    【题解】BFS、DFS——走迷宫问题

    【题目描述】给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,...

    【题解】王国比赛

    【题解】王国比赛

    【题目描述】智慧之王 Kri 统治着一座王国。 这天 Kri 决定举行一场比赛,来检验自己大臣的智慧。 比赛由 n道判断题组成,有 m位大臣参加。现在你已经知道了所有大臣的答题情况,但尚未拿到答...

    【题解】夹角

    【题目描述】这次童鞋们面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。注:夹角的范围[0,180],两个点不会在圆心出现。【输入描述】输入数据的第一行是一个数据T,表示...

    【题解】登山

    【题解】登山

    【题目描述】五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不...

    【题解】老王赛马

    【题目描述】赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为“战国时期”。在魏国作官的孙膑,因为受到同僚庞涓的迫害,被齐国使臣救出后,到达齐国国都。 赛马是当时最受...