B4341 [语言月赛 202506] 票价计算

· · 题解

Source & Knowledge

2024 年 6 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

给定三班通勤车的票价与运行时间,以及每提前一分钟的奖金金额。已知最慢的一班车正好在 9:00 到达。请选择一班车,使得最终花费(票价减去奖金)最少。

题目分析

本题考察基础算术运算条件判断。设:

由于最慢的车刚好在 9:00 到达,运行时间最长的那班车的时间 T = \max(b_1, b_2, b_3) 可作为统一参考时间。

若选择某一班车 i,其到达时间为 b_i,则比最慢车早到 T - b_i 分钟,所获得奖金为 c \times (T - b_i)。于是其最终花费为:

\text{cost}_i = a_i - c \times (T - b_i)

我们分别计算三辆车的最终花费,选出最小值所对应的车。如果有多个车花费相同,取编号最小的即可。

核心计算逻辑:

int T = max(max(b1, b2), b3);
int cost1 = a1 - c * (T - b1);
int cost2 = a2 - c * (T - b2);
int cost3 = a3 - c * (T - b3);

接下来判断三个花费中的最小值,并输出对应车次编号和该花费即可。