1 条题解
-
0
题目描述
Bill 和 Ted 的汽车里程表坏了,他们只能通过记录速度和总行驶时间来估算行驶距离。给定 n 组数据,每组包含速度 s(英里/小时)和总运行时间 t(小时),其中 t 严格递增。计算总行驶距离。
例如: 输入:
3 20 2 30 6 10 7
表示:
- 前 2 小时以 20 mph 行驶
- 接下来 4 小时(6-2)以 30 mph 行驶
- 最后 1 小时(7-6)以 10 mph 行驶 总距离 = 2×20 + 4×30 + 1×10 = 170 英里
解题思路
- 输入处理:读取 n 组 (s, t) 数据
- 分段计算:
- 第一段时间段:t₁ 小时,速度 s₁
- 后续时间段:Δt = tᵢ - tᵢ₋₁ 小时,速度 sᵢ
- 累加距离:总距离 = Σ(Δt × s)
代码实现(Python)
#include <iostream> using namespace std; int main() { int n,i,x,y,z,ans; while(cin>>n&&n>0) { ans=z=0; for(i=0;i<n;i++) { cin>>x>>y; ans+=(y-z)*x; z=y; } cout<<ans<<" miles"<<endl; } return 0;}
复杂度分析
- 时间复杂度:O(n) 每组数据
- 空间复杂度:O(1) 仅存储当前状态
示例解释
输入样例1:
3 20 2 30 6 10 7
计算过程:
- 2×20 = 40 英里
- (6-2)×30 = 120 英里
- (7-6)×10 = 10 英里
输出:40+120+10 =
170 miles
- 1
信息
- ID
- 1018
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者