2017 Speed Limit:0ms AC的小水题

题目翻译

比尔和特德正在进行旅行。 但是他们汽车中的里程表坏了,所以他们不知道行驶了多少英里。 幸运的是,比尔的秒表工作正常,因此他们可以记录自己的速度和驾驶总时间。 不幸的是,他们的记录保存策略有点奇怪,因此他们需要帮助来计算总行驶距离。 您将编写一个程序来执行此计算。
在这里插入图片描述
这意味着他们以每小时20英里的速度行驶2小时,然后以每小时30英里的速度行驶6-2 = 4小时,然后以每小时10英里的速度行驶7-6 = 1小时。 这样驱动的距离为(2)(20)+(4)(30)+(1)(10)= 40 + 120 + 10 = 170英里。 请注意,总经过时间始终是从行程开始以来,而不是从其日志中的上一个条目开始。

思路分析

我们只需要一个元素lb不断的记录上一个时刻b,然后b-lb就是这个速度行驶的时间,刚好输入也是有序的,

#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
using namespace std;

int main() {
	int n, sum, a, b, lb;//lb记录上一个行程所用的时间
	while (cin >> n && n > -1) {
		sum = 0; lb = 0;
		for (int i = 0; i < n; i++) {
			cin >> a >> b;
			sum += (b - lb)*a;
			lb = b;
		}
		cout << sum << " miles" << endl;
	}
}
发布了186 篇原创文章 · 获赞 13 · 访问量 9295

猜你喜欢

转载自blog.csdn.net/csyifanZhang/article/details/105255537
今日推荐