CF1559 - E. Mocha and Stars

E. Mocha and Stars

题意

给出 nn 个区间 [li,ri][l_i, r_i]mm,保证 liriml_i\leqslant r_i\leqslant m,求:

a1=l1r1a2=l2r2an=lnrn[gcd(a1,a2,,an)=1][a1+a2++anm]\sum_{a_1=l_1}^{r_1}\sum_{a_2=l_2}^{r_2}\cdots\sum_{a_n=l_n}^{r_n}[\text{gcd}(a_1,a_2,\ldots,a_n)=1]\cdot[a_1+a_2+\cdots+a_n\leqslant m]

思路

可以使用Mobius反演转换 [gcd(a1,a2,,an)=1][\text{gcd}(a_1,a_2,\cdots,a_n)=1][a1+a2++anm][a_1+a_2+\cdots+a_n\leqslant m] 可以使用01背包解决(前缀和优化)。

下面推下式子:

a1=l1r1a2=l2r2an=lnrn[gcd(a1,a2,,an)=1][a1+a2++anm]=a1=l1r1a2=l2r2an=lnrndgcd(a1,,an)μ(d)[a1+a2++anm]=d=1min(r1,r2,,rn)μ(d)a1=l1dr1dan=lndrnd[a1d+a2d++andm]=d=1min(r1,r2,,rn)μ(d)a1=l1dr1dan=lndrnd[a1+a2++anmd]\begin{aligned} &\sum_{a_1=l_1}^{r_1}\sum_{a_2=l_2}^{r_2}\cdots\sum_{a_n=l_n}^{r_n}[\text{gcd}(a_1,a_2,\ldots,a_n)=1]\cdot[a_1+a_2+\cdots+a_n\leqslant m]\\ =&\sum_{a_1=l_1}^{r_1}\sum_{a_2=l_2}^{r_2}\cdots\sum_{a_n=l_n}^{r_n}\sum_{d|\text{gcd}(a_1,\ldots,a_n)}\mu(d)\cdot[a_1+a_2+\cdots+a_n\leqslant m]\\ =&\sum_{d=1}^{\min(r_1,r_2,\ldots,r_n)}\mu(d)\sum_{a_1=\left\lceil\frac{l_1}{d}\right\rceil}^{\left\lfloor\frac{r_1}{d}\right\rfloor}\cdots\sum_{a_n=\left\lceil\frac{l_n}{d}\right\rceil}^{\left\lfloor\frac{r_n}{d}\right\rfloor}[a_1d+a_2d+\cdots+a_nd\leqslant m]\\ =&\sum_{d=1}^{\min(r_1,r_2,\ldots,r_n)}\mu(d)\sum_{a_1=\left\lceil\frac{l_1}{d}\right\rceil}^{\left\lfloor\frac{r_1}{d}\right\rfloor}\cdots\sum_{a_n=\left\lceil\frac{l_n}{d}\right\rceil}^{\left\lfloor\frac{r_n}{d}\right\rfloor}[a_1+a_2+\cdots+a_n\leqslant \left\lfloor\frac{m}{d}\right\rfloor]\\ \end{aligned}

考虑计算 a1=l1dr1dan=lndrnd[a1+a2++anmd]\displaystyle \sum_{a_1=\left\lceil\frac{l_1}{d}\right\rceil}^{\left\lfloor\frac{r_1}{d}\right\rfloor}\cdots\sum_{a_n=\left\lceil\frac{l_n}{d}\right\rceil}^{\left\lfloor\frac{r_n}{d}\right\rfloor}[a_1+a_2+\cdots+a_n\leqslant \left\lfloor\frac{m}{d}\right\rfloor] 的复杂度。

这个式子可以通过01背包dp完成计算,设 f(i,j)f(i, j) 表示前i个物品,总重量和为j的方案数,转移为:

f(i,j)=k=lirif(i1,jk)f(i,j)=\sum_{k=l_i}^{r_i}f(i-1,j-k)

用前缀和优化后,dp总复杂度为 O(NMd)O(N\left\lfloor\frac{M}{d}\right\rfloor)

则计算 d=1min(r1,r2,,rn)μ(d)a1=l1dr1dan=lndrnd[a1+a2++anmd]\displaystyle \sum_{d=1}^{\min(r_1,r_2,\ldots,r_n)}\mu(d)\sum_{a_1=\left\lceil\frac{l_1}{d}\right\rceil}^{\left\lfloor\frac{r_1}{d}\right\rfloor}\cdots\sum_{a_n=\left\lceil\frac{l_n}{d}\right\rceil}^{\left\lfloor\frac{r_n}{d}\right\rfloor}[a_1+a_2+\cdots+a_n\leqslant \left\lfloor\frac{m}{d}\right\rfloor]

直接枚举的总复杂度为 O(i=1MNMd)=O(NMlogM)O(\sum_{i=1}^MN\left\lfloor\frac{M}{d}\right\rfloor)=O(NMlogM)

如果使用数论分块的总复杂度为 O(NMlogM)O(N\sqrt Mlog\sqrt M),但其实常数很大。

直接暴力枚举d:

使用数论分块:


CF1559 - E. Mocha and Stars
https://wty-yy.github.io/posts/18847/
作者
wty
发布于
2021年8月18日
许可协议