专栏文章

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

B4341题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mip2i2ei
此快照首次捕获于
2025/12/03 05:05
3 个月前
此快照最后确认于
2025/12/03 05:05
3 个月前
查看原文

Source & Knowledge

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

题目大意

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

题目分析

本题考察基础算术运算条件判断。设:
  • 每班车的票价分别为 a1,a2,a3a_1, a_2, a_3
  • 运行时间分别为 b1,b2,b3b_1, b_2, b_3
  • 每提前一分钟可获得奖金 cc
由于最慢的车刚好在 9:00 到达,运行时间最长的那班车的时间 T=max(b1,b2,b3)T = \max(b_1, b_2, b_3) 可作为统一参考时间。
若选择某一班车 ii,其到达时间为 bib_i,则比最慢车早到 TbiT - b_i 分钟,所获得奖金为 c×(Tbi)c \times (T - b_i)。于是其最终花费为:
costi=aic×(Tbi)\text{cost}_i = a_i - c \times (T - b_i)
我们分别计算三辆车的最终花费,选出最小值所对应的车。如果有多个车花费相同,取编号最小的即可。

核心计算逻辑:

CPP
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);
接下来判断三个花费中的最小值,并输出对应车次编号和该花费即可。

评论

1 条评论,欢迎与作者交流。

正在加载评论...