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


整除分塊

先上板子:

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