这是我写的check函数(一个点都过不了)
bool check(int mid)
{
int count = k;
for (int i = 1;i < n;)
{
if (a[i] - a[i - 1] > mid)
{
a[i - 1] += mid;
count--;
}
else
{
i++;
}
}
return count >= 0;
}
下面是题解的(加上我自己的改写,过了)
bool check(int mid)
{
int count = k;
int now = 0;
for (int i = 1; i < n; i++)
{
if (count < 0)
break;
if (a[i] - now > mid)
{
now += mid;
count--;
i--;
}
else
{
now = a[i];
}
}
return count >= 0;
}
这俩运行的时候哪些结果会有不同呢?