整除分块的向上向下取整写法

首先向上取整有一个证明,这个我之前写过


推导

对于向上取整,求:

[sum_{i=1}^{n} left lceil frac{n}{i} ight ceil ]

设:

[left lceil frac{n}{i} ight ceil=m ]

对于相同的 (m) ,满足:

[i imes (m-1)< nle i imes m ]

[frac{n}{m}le i<frac{n}{m-1} ]

因为 (i) 是整数

[frac{n}{m}le ile frac{n-1}{m-1} ]

所以对于当前找到的一个左端点 (i),求出对应的 (m),然后算出值 (m) 相同的区间的右端点就好了。

注意在向上取整的时候要特判 (m=1) 的情况,右边界为 (n),不然会出现 (frac{n}{0}) 导致RE。

向下取整超级简单,更好推还不用特判,对于点 (i),右边界就等于:

[leftlfloor frac{n}{leftlfloorfrac{n}{i} ight floor} ight floor ]


练习

[HAOI2011]Problem b

简单的运用。

$$ exttt{Dirty Deeds Done Dirt Cheap}$$
原文地址:https://www.cnblogs.com/zjjws/p/13393858.html