Ride to office 贪心

Description

起点与终点相隔4500米。现Charley 需要从起点骑车到终点。但是,他有个习惯,沿途需要有人陪伴,即以相同的速度, 与另外一个人一起骑。而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上这个更快的人。先给定所有与Charley 同路的人各自的速度与出发时间,问Charley 以这种方式跟人,骑完4500米需要多少时间。得出的结果若是小数,则向上取整。

Input

输入若干组数据,每组数据第一行n(1≤n≤10000),n为0,表示输入结束,接着输入n行数据,每行2个数据,表示速度v(km/h)和出发时间t,如果t<0,表示陪伴人提早出发了。

Output

输出对应若干行数据,每行输出1个数,表示最快到达的时间。

Sample Input

4
20 0
25 -155
27 190
30 240
2
21 0
22 34
0

Sample Output

780
771

开始做这道题智障了,速度单位没说,我拿m/s来算追及问题,连样例的结果都算不出来TT!,后来看了答案,看了播客,好吧,不是m/s也不用算追及问题,贪心就完事,依次计算每个陪同的总时间,最后哪个陪同先到终点,最短总时间就是那位陪同的是总时间,刺激.jpg.  提前出门的陪同,要么追不上,要么就超过他。

cmath库里的ceil()向上取整挺好用的,floor()向下取整也了解下,当然也可以直接用x+0.9来向上取整(考虑有0.000001的情况就多打几个9)。

Source

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
	int n;
	cin >> n;
	while(n)
	{
		int t;
		double v, time, ans = 99999;
		
		for(int i = 0; i < n; i++)
		{
			cin >> v >> t;
			if(t < 0)
				continue;
			time = (4500 / v * 3.6 );
			time = ceil(time) + t;
			if(time < ans)
				ans = time;				
		}
		cout << (int)ans << endl;
		cin >> n;
	}
	return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值