Loading

推导递归解决的数论式——P1587 [NOI2016] 循环之美 题解

推导递归解决的数论式——P1587 [NOI2016] 循环之美 题解

快进到计算 \(\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k]\)

做法一:拆掉 \([x\bot y]\)

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} &\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k] \\=&\sum_{y=1}^m[y\bot k]\sum_{d|y}\mu(d)\w{n}{d} \\=&\sum_{d=1}^m\mu(d)\w{n}{d}\sum_{y'=1}^{\w md}[y'd\bot k] \\=&\sum_{d=1}^m\mu(d)\w{n}{d}[d\bot k]\sum_{y'=1}^{\w md}[y'\bot k] \end{aligned} \]

引理:\(\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} f(n)=\sum_{i=1}^n[i\bot k]=\w nd\varphi(k)+f(n\bmod k)\)

证明:

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} f(n)&=\sum_{i=1}^n[\gcd(i,k)=1] \\&=\sum_{i=1}^n[\gcd(i\bmod k,k)=1] \\&=\w{n}{k}\sum_{i=1}^k[\gcd(k,k)=1]+\sum_{i=1}^{n\bmod k}\sum_{i=1}^k[\gcd(i,k)=1]+ \\&=\w nd\varphi(k)+f(n\bmod k) \end{aligned} \]

可以 \(\mathcal O(k\log k)\) 求出 \(f(0,k)\sim f(k-1,k)\)。考虑整除分块,截取其中一段\([L,R]\)求值,原式化为:

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} &\sum_{d=L}^R\mu(d)\w{n}{d}[d\bot k]\sum_{y'=1}^{\w md}[y'\bot k]\\ =&\w{n}{L}f(\w mL)\sum_{d=L}^R\mu(d)[d\bot k] \end{aligned} \]

\(g(n,k)=\sum_{d=1}^n\mu(d)[d\bot k]\),继续推导递归式:

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} g(n,k)&=\sum_{d=1}^n\mu(d)[d\bot k] \\&=\sum_{d=1}^n\mu(d)\sum_{D|d,D|k}\mu(D) \\&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(dD) \end{aligned} \]

因为当 \(\gcd(D,d)\ne 1\) 时,\(\mu(dD)=0\),所以 \(\mu(dD)=\mu(d)\mu(D)[d\bot D]\),继续推导:

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} g(n,k)&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(dD) \\&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(d)\mu(D)[d\bot D] \\&=\sum_{D|k}\mu^2(D)\sum_{d'=1}^{\w nD}\mu(d)[d\bot D] \\&=\sum_{D|k}\mu^2(D)g(\w nD,D) \end{aligned} \]

边界:\(g(0,k)=0,g(n,1)=\sum_{i=1}^n\mu(i)\),用杜教筛

这东西整体和杜教筛很像,粗略的分析一下,由于 \(\mu^2(D)\) 相当于 \(D\) 无平方因子,结合杜教筛类似的复杂度分析,应该为 \(\mathcal O(2^{\sigma(k)}n^{\frac 23})\)

做法二:拆掉 \([k\bot y]\)

\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} \begin{aligned} f(n,m,k)=&\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k] \\=&\sum_{x=1}^n\sum_{y=1}^m[x\bot y]\sum_{d|y,d|k}\mu(d) \\=&\sum_{d|k}\mu(d)\sum_{x=1}^n\sum_{y'=1}^{\w md}[x\bot dy'] \\=&\sum_{d|k}\mu(d)\sum_{x=1}^n\sum_{y'=1}^{\w md}[x\bot y'][x\bot d] \\=&\sum_{d|k}\mu(d)f(\w md,n,d) \end{aligned} \]

边界 \(\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} f(0,m,k)=f(n,0,k)=0,f(n,m,1)=\sum_{d=1}\mu(d)\w nd \w md\)

复杂度据说是 \(\mathcal O(\sqrt n\log n\log m+n^{\frac 23})\)

求助复杂度分析 - 洛谷

posted @ 2025-06-18 18:03  lupengheyyds  阅读(19)  评论(0)    收藏  举报