「考试」省选79
T1
分别对序列和值域分块。
只需要做到\(O(\sqrt{n})\)查询\(O(1)\)修改就可以了。
这样的话与处理一下序列和值域分块的情况。
查询的时候动态的处理散块就可以在\(O(\sqrt{n})\)复杂度维护\(K\)大值。
T2
直接推式子。
\[\begin{aligned}
ans&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{k=1}^{K}f_k(gcd(i,j))\\
&=\sum\limits_{k=1}^{K}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f_k(gcd(i,j))\\
&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{n}{d}}[gcd(i,j)=1]\\
&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{n}{d}}\sum\limits_{g|gcd(i,j)}\mu(g)\\
&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\sum\limits_{g=1}^{\frac{n}{d}}\mu(g)\lfloor\frac{n}{dg}\rfloor^2\\
&=\sum\limits_{k=1}^{K}\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor^2\sum\limits_{d|T}\mu(d)f_k(\frac{T}{d})\\
H_k(n)&=\sum\limits_{d|n}\mu(d)f_k(\frac{n}{d})\\
H_k&=\mu*f_k\\
H_k(p^e)&=\mu(p^0)f_k(p^e)+\mu(p^1)f_k(p^{e-1})\\
n=&\prod\limits_{i=1}^{w}p_i^{c_i}\\
g(n)&=\prod\limits_{i=1}^{n}(-1)^{c_i}\\
\end{aligned}\]
\[\begin{aligned}
ans&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{k=1}^{K}f_k(gcd(i,j))\\
&=\sum\limits_{k=1}^{K}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f_k(gcd(i,j))\\
&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\sum\limits_{i=1}^{\frac{n}{d}}\sum\limits_{j=1}^{\frac{n}{d}}[gcd(i,j)=1]\\
&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\left(\left(\sum\limits_{i=1}^{\frac{n}{d}}2\varphi(i)\right)-1\right)\\
res&=\sum\limits_{k=1}^{K}\sum\limits_{d=1}^{n}f_k(d)\\
F_k(n)&=\sum\limits_{i=1}^{n}f_k(i)\\
&=\sum\limits_{i=1}^{n}g(i)-\sum\limits_{i=2}^{n}(-\mu(i))\sum\limits_{j=1}^{\frac{n}{i^{k+1}}}g(i^{k+1}j)\\
&=\sum\limits_{i=1}^{n}\mu(i)\sum\limits_{j=1}^{\frac{n}{i^{k+1}}}g(i^{k+1}j)\\
&=\sum\limits_{i=1}^{\sqrt[k+1]{n}}\mu(i)g^{k+1}(i)\sum\limits_{j=1}^{\frac{n}{i^{k+1}}}g(j)\\
G(n)&=\sum\limits_{i=1}^{n}g(i)\\
g*\delta&=\beta\\
\sum\limits_{d|n}g(\frac{n}{d})&=[\exist i\in N^{*},i^2=n]\\
g*I&=[\exist i\in N^{*},i^2=n]\\
\sum\limits_{i=1}^{n}[\exist j\in N^{*},j^2=i]&=\sum\limits_{i=1}^{n}\sum\limits_{d|i}g(\frac{i}{d})\\
&=\sum\limits_{d=1}^{n}\sum\limits_{i=1}^{\frac{n}{d}}g(i)\\
&=G(n)+\sum\limits_{d=2}^{n}G(\frac{n}{d})\\
G(n)&=\sqrt{n}-\sum\limits_{d=2}^{n}G(\frac{n}{d})\\
\end{aligned}
\]
杜教筛就完事了。
T3
对于两条序列,有如下结论和证明。
\[a\rightarrow b,c\rightarrow d
\]
\[a\rightarrow d,c\rightarrow b
\]
\[(a,b)\cap(c,d)=e,(a,e)+(e,b)+(c,e)+(e,d)=(a,d)+(c,b)
\]
\[(a,b)\cap(c,d)=\emptyset,rt,LCA(a,b),LCA(c,d)
\]
这样我们只需要找到每个点当了多少次起点或者终点,然后按照最小字典序组合起来就可以了。
\[fr=LCA(a,b),se=LCA(c,d)
\]
\[(a,fr)+(fr,b)+(c,se)+(se,d)=(a,fr)+(fr,se)+(se,d)+(c,se)+(se,fr)+(fr,b)
\]