HDU 5935 && 2016CCPC杭州 C: Car
程序员文章站
2022-04-28 14:50:21
...
这题题意好难懂:
有一辆速度只会越来越快的车,一开始速度为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;
}