这里全是口胡(蒟蒻的口胡大家就不需要看了吧


整除分块

先上板子:

for(int l=2,r;l<=k;l=r+1) { r=k/(k/l); }

复杂度:$\Theta\left ( \sqrt{n} \right )$

证明口胡:

蒟蒻到今天才明白为什么这么分

好现在开始证口胡

整除分块的核心是在一段区间内$\left \lfloor n/i \right \rfloor$的值是相等的

有因为$\left \lfloor n/i \right \rfloor$只有$2\cdot \sqrt{n}$个取值,所以是$\Theta\left ( \sqrt{n} \right )$的.

考虑在确定了左端点后,如何确定右端点

先明确我们要选的区间应该满足:$$\lfloor n/l \rfloor=\lfloor n/r \rfloor$$

$l$已经确定了,现在的任务是最大化$r$

$\left \lfloor n/l \right \rfloor$的意义可以看作$n$中可以被划分出多少个长度为$l$的区间

问题可以转化为:求$n$可以被划分为多少个长度为$\left \lfloor n/l \right \rfloor$的区间

那么答案就显然为:$$\left \lfloor n/{\left \lfloor n/l \right \rfloor} \right \rfloor$$

完结撒花接下来是关于$\left \lfloor n/i^{2} \right \rfloor$的整除分块

仍然按上面的思路来

要选的区间应该满足:$$\left \lfloor n/l^{2} \right \rfloor=\left \lfloor n/r^{2} \right \rfloor$$

仍然最大化$r^{2}$,问题转化为

求$n$可以被划分为多少个长度为$\left \lfloor n/l^{2} \right \rfloor$的区间

答案为:$$\left \lfloor n/\left \lfloor n/l^{2} \right \rfloor \right \rfloor$$

但是要注意,此时求出的是$r^{2}$

所以应该开根,即为:$$\sqrt{\left \lfloor n/\left \lfloor n/l^{2}  \right \rfloor \right \rfloor}$$

然后我打算口胡$n^{2}/i^{3}$的:

大概率会错,打我的时候别打脸就行

要选的区间可能应该满足:$$\left \lfloor n^{2}/l^{3} \right \rfloor=\left \lfloor n^{2}/r^{3} \right \rfloor$$

可能仍然最大化$r^{3}$,问题可能转化为

求$n^{2}$可以被划分为多少个长度为$\left \lfloor n^{2}/l^{3} \right \rfloor$的区间

答案可能为:$$\sqrt[3]{\left \lfloor n^{2}/\left \lfloor n^{2}/l^{3}  \right \rfloor \right \rfloor}$$

(好丑啊)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM