原题![在这里插入图片描述](https://img-blog.csdnimg.cn/20200305091524960.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1c2VpY2U=,size_16,color_FFFFFF,t_70)
题目大意
跑步,跑 K K Km,从0m/s开始,加速度可以是1m/s,0,-1m/s,速度不能低于0m/s,在终点的速度要小于等于 X X X,求最短时间
题目分析
我一开始还以为只能刚好跑到终点,结果发现看错了……英语太差,给自己增加难度
知道题意之后就不是很难了,因为结束时有速度限制,那就不能从一开始加速到末尾了,要在加速超过末速后将减速区间也一起加上去,注意有一种特例,就是超过末速之后有一次不加速,那样的话就只用加一次,所以这里的判断就摆在了加速之后←
代码
#include<cstdio>
int main()
{
int k,n;
scanf("%d%d",&k,&n);
for (int i = 0;i < n;++i)
{
int x;
scanf("%d",&x);
int l = 0,r = 0,time = 0;
for (int j = 1;j < k / 2;++j)
{
l += j,time++;
if (l + r >= k)
{
printf("%d\n",time);
break;
}
if (j >= x) r += j,time++;
if (l + r >= k)
{
printf("%d\n",time);
break;
}
}
}
return 0;
}