首页 > 其他分享 >CF1884D

CF1884D

时间:2023-10-25 16:56:40浏览次数:33  
标签:lfloor CF1884D frac gcd limits sum rfloor

传送门

description

给定长度为 \(n\) 的数组 \(c\)。求公因数都不在数组里的有序元素对 \((c_i,c_j),i<j\) 的个数。

\(n\leq 10^6\) ,值域 \(n\)

solution

不妨先计算存在公因数且是无序对且允许 \(i=j\) 的个数,最后容斥一下。

设数组里有 \(a_i\) 个 \(i\),\(b_i\) 表示 \(i\) 的因数是否在数组中出现过。

则我们要计算的就是 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n a_{i}a_{j}b_{\gcd(i,j)}\)。

\(\begin{aligned}&\sum\limits_{i=1}^n\sum\limits_{j=1}^n a_{i}a_{j}b_{\gcd(i,j)}\\ &=\sum\limits_{d=1}^nb_d\sum\limits_{i=1}^n\sum\limits_{j=1}^n a_{i}a_{j}[\gcd(i,j)=d] \\&=\sum\limits_{d=1}^nb_d\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor} a_{id}a_{jd}[\gcd(i,j)=1] \\ &=\sum\limits_{d=1}^n b_d \sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor} a_{id}a_{jd} \sum\limits_{p\mid \gcd(i,j)} \mu (p)\end{aligned}\)

设 \(s_{i}=\sum\limits_{j=1}^{\lfloor\frac{n}{i}\rfloor}a_i\)。

那么

\(\begin{aligned}& \sum\limits_{d=1}^n b_d \sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor} a_{id}a_{jd} \sum\limits_{p\mid \gcd(i,j)} \mu (p)\\ &= \sum\limits_{d=1}b_d \sum\limits_{p=1}^{\lfloor\frac{n}{d}\rfloor}\mu(p) s_{dp}^2 \end{aligned}\)

\(a,b,s\) 数组可以 \(O(n\ln n)\) 处理出来,这个式子也可以 \(O(n\ln n)\) 算。

code

Submission #229178122 - Codeforces

标签:lfloor,CF1884D,frac,gcd,limits,sum,rfloor
From: https://www.cnblogs.com/FreshOrange/p/17787607.html

相关文章