小寄巧:整除分块

事情的起源是这样的:

/被和谐部分/

然后写了这篇博客。


看一道题目:

\(\sum_{i=1}^{i \leq n} \lfloor \frac{n}{i} \rfloor\)

其中 \(1 \le n \le 1e9\)

发现有很多个 \(\lfloor \frac{n}{i} \rfloor\) 是相同的。

我们把相同的东西一起计算。算出相同的值的起点和终点。

然后想想,怎么算出终点。

打个表发现,起点到终点商一定,终点的余数最小,为 \(0\)。那么就是 \(\frac{n}{\frac{n}{l}}\)

感性理解我不会证,时间复杂度降到了 \(O(\sqrt n)\)


回到这道题

\(a_i \le b_i\) 的情况不用管。否则,我们要 \(\lfloor \frac{a_i}{k} \rfloor = \lfloor \frac{b_i}{k} \rfloor\),这兄弟才能靠先手优势补到刀。

然后用整除分块搞出来哪些东西满足条件,用线段树 ++,搞 \(n\) 次,满足条件的 \(k\) 就是 \(n\) 次都满足的。

就是这么个小寄巧,害得我小号被 Hack,没有一飞冲天。淦。

posted @ 2023-01-10 18:09  _maze  阅读(11)  评论(0编辑  收藏  举报