LOJ#2476. 「2018 集训队互测 Day 3」蒜头的奖杯

给定n个长度为6的序列\(A,B,C,D,E,F\),求:

\[\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^nA_iB_jC_kD_{\gcd(i,j)}E_{\gcd(i,k)}F_{\gcd(j,k)} \]


首先令\(D,E,F\)卷上\(\mu\)变成\(D',E',F'\),莫反一下:

\[\sum_{i,j,k}A_iB_jC_k\sum_{a|i,a|j}D'_a\sum_{b|i,b|k}E'_b\sum_{c|j,c|k}F'_c\\ \sum_{a,b,c}D'_aE'_bF'_c\sum_{\text{lcm}(a,b)|i}A_i\sum_{\text{lcm}(a,c)|j}B_j\sum_{\text{lcm}(b,c)|k}C_k \]

则我们令\(A'_i=\sum_{i|d}A_i\),B和C做同样的变换。

则就变成:

\[\sum_{a,b,c}D'_aE'_bF'_cA'_{\text{lcm}(a,b)}B'_{\text{lcm}(a,c)}C'_{\text{lcm}(b,c)} \]

那么这就是经典三元环计数了,1e5下边有m=2625630这么多条边。

复杂度是\(O(m\sqrt m)\)的,但是他能过。

然后是正解。

\(f(A)=A*\mu,g(A)_i=\sum_{i|x}A_x\),则:

\[\begin{aligned} &\sum_k C_k\sum_i\sum_jA_iB_jD_{\gcd(i,j)}\sum_{p|(i,k)}f(E)_p\sum_{q|(j,k)}f(F)_q\\ =&\sum_{\text{lcm}(p,q)\le n}f(E)_pf(F)_qg(C)_{\text{lcm}(p,q)}\sum_{ip\le n}\sum_{jq\le n}A_{ip}B_{jq}D_{\gcd(ip,jq)}\\ =&\sum_d\sum_{\gcd(p,q)=1,pq\le\frac nd}f(E)_{pd}f(F)_{qd}g(C)_{pqd}\sum_{ip\le \frac nd}\sum_{jq\le \frac nd}A_{ipd}B_{jqd}D_{d\gcd(ip,jq)} \end{aligned} \]

考虑对于每一个d我们单独做,记\(P_i=f(E)_{id},Q_i=f(F)_{id},R_i=g(C)_{id},S_i=A_{id},T_i=B_{id},W_i=D_{id},m=\frac nd\)

则可以得到:\(\sum_{\gcd(x,y)=1,xy\le m}P_xQ_yR_{xy}\sum_{ix\le m}\sum_{jy\le m}S_{ix}T_{jy}W_{\gcd(ix,jy)}\)

考虑先看后面的式子:

\[\begin{aligned} &\sum_{ix\le m}\sum_{jy\le m}S_{ix}T_{jy}W_{\gcd(ix,jy)}\\ =&\sum_{jy\le m}T_{jy}\sum_{d|jy}f(W)_d\sum_{d|ix,ix\le m}S_{ix}\\ =&\sum_{y|z}T_{z}\sum_{d|z}f(W)_d\sum_{d|r}S_{r}[x|r] \end{aligned} \]

可以注意到,后面这一部分完全跟y没关系!也就是说我们只要知道x即可,我们考虑枚举x和y中比较小的那一个,则取值范围只有根号,可以预处理一发,就把后面的那一部分处理出来,然后枚举y,再枚举y的倍数求个和即可。

好,看看单次复杂度是多少。

首先分析x的预处理的部分,每一次预处理都要花\(O(m\log \log m)\)的时间,x会枚举\(\sqrt m\)次,因此复杂度是\(O(m\sqrt m\log \log m)\)

考虑每一个y出现了多少次,对于小于等于根号m的,出现了y次,这一部分复杂度是:\(\sum_{i=1}^{\sqrt m}i\frac mi=m\sqrt m\)

对于大于根号m的,出现了\(\frac mi\)次,那复杂度就是:\(\sum_{i=\sqrt m}^m(\frac mi)^2\),积分一下可以得到:\(m^2(\frac 1{\sqrt m}-\frac 1m)=m\sqrt m\)

因此这一部分不足以成为复杂度瓶颈。

然后对于所有d求个和,复杂度是:\(\sum_{d=1}^n(\frac nd)^{1.5}\log\log n=n^{1.5}\log\log n\)

posted @ 2020-07-16 14:45  _xgcxgc  阅读(165)  评论(2编辑  收藏  举报