1 条题解

  • 0
    @ 2025-5-13 12:30:30

    题目描述

    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 英里

    解题思路

    1. 输入处理:读取 n 组 (s, t) 数据
    2. 分段计算
      • 第一段时间段:t₁ 小时,速度 s₁
      • 后续时间段:Δt = tᵢ - tᵢ₋₁ 小时,速度 sᵢ
    3. 累加距离:总距离 = Σ(Δ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
    

    计算过程:

    1. 2×20 = 40 英里
    2. (6-2)×30 = 120 英里
    3. (7-6)×10 = 10 英里 输出:40+120+10 = 170 miles
    • 1

    信息

    ID
    1018
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    3
    已通过
    1
    上传者