HDU 5935 Car

来源:互联网 发布:淘宝神笔用处是什么 编辑:程序博客网 时间:2024/05/20 09:07

题目链接:https://vjudge.net/problem/HDU-5935

题意:一辆车,从t=0开始走,速度只能递增,可为小数。警察在t为整数的时候记录了N个车的位置(整数),问到达最后一个位置时这辆车总共开了多久。

#include<bits/stdc++.h>#define maxn 100010#define ll long longusing namespace std;int main(){    int T;    scanf("%d",&T);    int cas=1;    while(T--)    {        int n;        ll a[maxn];        scanf("%d",&n);        a[0]=0;        for(int i=1;i<=n;i++)        {            scanf("%lld",&a[i]);        }        ll ans=1;//由于会卡精度,所以用分数形式递推        ll fenzi=a[n]-a[n-1];//距离        ll fenmu=1;//时间        for(int i=n-1;i>=1;i--)        {            ll d=a[i]-a[i-1];            fenmu*=d;            swap(fenzi,fenmu);            ll t=fenzi/fenmu+1;            if(fenzi%fenmu==0)                t--;            ans+=t;            fenzi=d;            fenmu=t;        }        printf("Case #%d: %lld\n",cas++,ans);    }}