update:添加了数学公式markdown

洛谷博客地址:https://www.luogu.com.cn/blog/KingofNight/post-shuo-lun-zheng-shuo-fen-kuai-ji-yang-xi-zheng-ming

一.复杂度证明

引理一:对于任意一个正整数$x$,$[\frac

的种类的数量在$\sqrt$级

证明:将$d$分为小于等于$\sqrt\(与大于\)\sqrt$的两部分

1.当$d\leq\sqrt$时:

假设每个$[\frac]\(都不一样,最多也就\)\sqrt$个值

2.当$d>\sqrt$时:

\([\frac{x}{d}]<\sqrt{x}\)

∴$[\frac]\(的取值同样不超过\)\sqrt$个

∴个数在根号$x$级(不超过$2*\sqrt$)

即,整数分块的复杂度为$O(\sqrt)$

二.一堆引理及证明

引理二:对于所有使$[\frac

证明:假设不是连续区间,则一定存在一个$l<t<r$,

使得$[\frac]=[\frac]\(且\)[\frac]\neq[\frac]$

∵$t>l$

∴$[\frac]<[\frac]$

∵$t<r$

∴$[\frac]>[\frac]$

∵$[\frac]=[\frac]$

假设不成立

∴所有使$[\frac]=C$的$i$,其集合一定是一段连续的整数区间

引理三:对于所有使$[\frac

证明一:

∵$[l,r]\(内所有的数都可以使\)[\frac]=C$(定义)

∴$C=[\frac]$

小引理:$r=[\frac

一.证明$[\frac]=C$

令$A=[\frac{[\frac]}]=[\frac]$

所以$AC$可以表示为:

\(AC=x-k(0<=k<A,C)\)

∴$A=\frac$

∴$\frac=\frac\geq\frac=C$

假设$\frac\geq C+1$

∴$AC\leq x-A$

∵$AC=x-k$

又∵$k<A$

∴假设不成立

∴$\frac<C+1$

综上所述:\(C\leq \frac{x}{A}<C+1\)

∴$[\frac]=C$

二.证明$A$为最大的使$[\frac]=C$成立的数

令$AC=x-k(0\leq k<A,C)$

假设$A$不是最大令$[\frac]=C$成立的数,由引理二知:

$A+1$一定可以使$[\frac]=C$

∴$(A+1)*C=x-g(0\leq g<A,C)$

∴$AC+C=x-g$

又∵$AC=x-k$

∴$C=k-g$

∵$0\leq k,g<C$

∴假设不成立

∴命题得证

综上所述:$A=[\frac]\(是最大的令\)[\frac]=C$成立的数

∴$A$满足r的所有性质

∴$r=A$即$r=[\frac]=[\frac{[\frac]}]$

∴引理三得证

三.实现方法

由引理三知,我们只需要知道$l$就可以$O(1)\(算出区间\)[l,r]\(使得对于\)\forall i\in [l,r]\(都有\)[\frac]=[\frac]\(且对于\)\forall i\notin [l,r]\(都有\)[\frac]\neq[\frac]$

而,如果我们要枚举区间$[L,R]$的所有整数,那么第一个区间的$l$一定是$L$!

那么之后的区间呢?

不就是前一个区间的"\(r\)"加个一嘛!

∴我们就可以在$\sqrt$枚举完整个区间了!

PS:一个区间的定义:具有一个范围[l,r],且满足对于$\forall i\in [l,r]\(都有\)[\frac]=[\frac]\(且对于\)\forall i\notin [l,r]\(都有\)[\frac]\neq[\frac]$