尾大不掉题解
本体从ai到an全部加i,易想到差分,同时是二分课求最小值,用二分
三个数组 a 数 b 差分 c 前缀和
二分的check函数check最小值,从1到n遍历,求出前缀c[i]=c[i-1]+b[i],只要c[i]小于最小值,就加直到c[i]大于等于最小值,计算加的次数。总共加次数sum和c[i]更新,注意从c[i]需要+=次数i
最后sum<次数k return true
主函数只需要差分和二分模板
核心代码如下
c[i]=c[i-1]+b[i];
if(c[i]<x)
{
ll times=ceil(1.0(x-c[i])/i);
sum+=times;
c[i]+=times*i;
}
5 个赞