分析
设一个ad作为加速总距离,dd作为减速总距离。
每次当当前速度v>=x时,就要开始进行减速,当ad+dd>=k说明可以到达终点,此时输出最优解。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int k,n,x,v,ans;
int ad,dd;
int main()
{
scanf("%d%d",&k,&n);
for(int i=0;i<n;i++)
{
scanf("%d",&x);
ad=dd=0;
v=1;
ans=0;
while(1)
{
ad+=v;
ans++;
if(ad+dd>=k)
{
break;
}
if(v>=x)
{
dd+=v;
ans++;
if(ad+dd>=k)
{
break;
}
}
v++;
}
printf("%d\n",ans);
}
return 0;
}