整 除 分 块

https://www.cnblogs.com/chenxiaoran666/p/divide.html //大神勃客

\[luogu\ p2261\\ G(n,k)=\sum_{i=1}^nk\ mod\ i\\ a\ \%\ b= a-b*\lfloor\frac{a}{b}\rfloor\\ ans=\sum_{i=1}^nk-i*\lfloor\frac{k}{i}\rfloor\\ ans=n*k-\sum_{i=1}^ni*\lfloor\frac{k}{i}\rfloor\\ \lfloor\frac{k}{i}\rfloor可以分块来做,\lfloor\frac{k}{i}\rfloor大约2* \sqrt{k}种取值 \]

我们用样例来打表找规律,发现 $\lfloor \frac{k}{i} \rfloor $分别在一定的区域内相等,如下表所示:

i 1 2 3 4 5 6 7 8 9 10
\(\lfloor \frac{k}{i} \rfloor\) 5 2 1 1 1 0 0 0 0 0

可见 \(\lfloor \frac{k}{i} \rfloor\) 分成了 3 块,我们只需要计算 \(n×k\) 减去每一块的和即可

通过打表不难发现 \(\lfloor \frac{k}{i} \rfloor\)最多有\(2*\sqrt{k}\)种取值

\(\lfloor\frac ni\rfloor=\lfloor\frac n{i'}\rfloor\),i′的最大取值为\(\lfloor\frac n{\lfloor\frac ni\rfloor}\rfloor\)

根据上个结论,首先枚举块的左边界 l,并根据左边界和 k 计算出右边界 r

\(t = \lfloor \frac{k}{l} \rfloor\),分两种情况讨论:

  • \(t \neq 0\),则 \(r = \min (\lfloor \frac{k}{t} \rfloor , n)\)

  • \(t=0\),则$ r=n。$

  • 在[k/3]+1到[k/2]这个区间里,k%i也是一个等差数列,公差为2

    在[k/4]+1到[k/3]这个区间里,k%i也是一个等差数列,公差为3

    .........

    一直到[k/√k]+1到[k/(√k-1)]这个区间里,k%i也是一个等差数列,公差为(√k-1).

    剩下的1到[k/√k]的区间直接暴力求解即可.

    这样,我们就能用O(√k)来解决了.

\[luogu\\ p2260 p2834双倍经验\\ 求\sum_{i=1}^n\sum_{j=1}^m(n\ mod\ i) * (m\ mod\ j),i\not=j,mod\ 19940417的值 \]

根据容斥原理

\[\sum_{i=1}^n\sum_{j=1}^m(n\ mod\ i) * (m\ mod\ j),i\not=j\\ =\sum_{i=1}^n\sum_{j=1}^m(n-i\lfloor\frac{n}{i}\rfloor)(m-j\lfloor\frac{m}{j}\rfloor)i\not=j;\\ 令F(n)=\sum_{i=1}^n(n-i\lfloor\frac{n}{i}\rfloor)\\ 则原式为F(n)F(m)-\sum_{i=1}^n(n-i\lfloor\frac{n}{i}\rfloor)(m-i\lfloor\frac{m}{i}\rfloor)先看后面\\ 拆括号\sum_{i=1}^nnm-ni\lfloor\frac{m}{i}\rfloor-mi\lfloor\frac{n}{i}\rfloor+i^2\lfloor\frac{n}{i}\rfloor\lfloor\frac{m}{i}\rfloor 直接整除分块,复杂度O(\sqrt{n}+\sqrt{m}) \]

\[\delta^2=\frac{\sum(X-\mu)}{N}=E(X^2) - [ E(X)]^2 \ \delta^2为总体方差,X为变量,\mu为总体均值,N为总体例数 \\E为期望 \]

posted @ 2020-07-12 20:32  INFP  阅读(114)  评论(2编辑  收藏  举报