欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HDU 5935 && 2016CCPC杭州 C: Car

程序员文章站 2022-04-28 14:50:21
...

HDU 5935 && 2016CCPC杭州 C: Car


这题题意好难懂:

有一辆速度只会越来越快的车,一开始速度为0,并且在坐标为0的点上,之后开始向右加速

中间会进行n次检查,第i次检查ci,表示在某个时间(刚好是整点)汽车刚好到了某个整点坐标上

求汽车从原点到第n个检查点花费的最短时间(速度可不为整)


倒过来处理就好了

这题难在卡精度

用分式表示小数才可以过

#include<stdio.h>
#define LL long long
LL a[100005];
LL Gcd(LL x, LL y)
{
	if(y==0)
		return x;
	return Gcd(y, x%y);
}
int main(void)
{
	LL T, n, i, p, q, ans, x, cas = 1;
	scanf("%lld", &T);
	while(T--)
	{
		scanf("%lld", &n);
		for(i=1;i<=n;i++)
			scanf("%lld", &a[i]);
		ans = 1;
		p = a[n]-a[n-1], q = 1;
		for(i=n-2;i>=0;i--)
		{
			x = (a[i+1]-a[i])*q/p;
			while(p*x<(a[i+1]-a[i])*q)
				x++;
			ans += x;
			q = x, p = a[i+1]-a[i];
			x = Gcd(p, q);
			p /= x, q /= x;
		}
		printf("Case #%lld: %lld\n", cas++, ans);
	}
	return 0;
}

相关标签: 2016CCPC杭州赛区