题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5037
M长的数轴,N个石头,青蛙每次跳动距离为L,求问跳到终点最多多少步
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<string.h>
typedef long long LL;
using namespace std;
int a[300005];
int main()
{
int T,n,m,l,f1,s,f2,f,flag=0;
scanf("%d",&T);
while(T--)
{
flag++;
scanf("%d %d %d",&n,&m,&l);
s=0;
f=l;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
a[0]=0;
a[++n]=m;
sort(a,a+n+1);
for(int i=1;i<=n;i++)
{
f1=(a[i]-a[i-1])%(l+1);
f2=(a[i]-a[i-1])/(l+1);
if(f+f1>=l+1)
{
f=f1;
s=s+f2*2+1;
}
else if(f+f1<l+1)
{
f=f1+f;
s=s+f2*2;
}
}
printf("Case #%d: %d\n",flag,s);
}
return 0;
}
/*
11
10 30 3
22
9
10
13
26
11
12
29
1
19
*/