「考试」省选75

T1
小清新数据结构。
我们首先发现如果是在\(mod\ 2^{k+1}\)条件下,询问的数目会变成一段连续区间。
利用树状数组存储一下\(mod\ 2^{k}\)的所有情况,这样维护\(18\)个树状数组和整体加减标记就可以很好的查询了。

T2
莫比乌斯反演
存在结论:

\[d(ijk)=\sum\limits_{x|i}\sum\limits_{y|j}\sum\limits_{z|k}[(x,y)=1][(x,z)=1][(y,z)=1] \]

代入答案得到:

\[\begin{aligned} ans&=\sum\limits_{i=1}^{A}\sum\limits_{j=1}^{B}\sum\limits_{k=1}^{C}\sum\limits_{x|i}\sum\limits_{y|j}\sum\limits_{z|k}[(x,y)=1][(x,z)=1][(y,z)=1]\\ &=\sum\limits_{x=1}^{A}\sum\limits_{y=1}^{B}\sum\limits_{z=1}^{C}\lfloor\frac{A}{x}\rfloor\lfloor\frac{B}{y}\rfloor\lfloor\frac{C}{z}\rfloor\sum\limits_{i|(x,y)}\mu(i)\sum\limits_{j|(x,z)}\mu(j)\sum\limits_{k|(y,z)}\mu(k)\\ &=\sum\limits_{i=1}^{min(A,B)}\mu(i)\sum\limits_{j=1}^{min(A,C)}\mu(j)\sum\limits_{k=1}^{min(B,C)}\mu(k)\sum\limits_{[i,j]|x}\lfloor\frac{A}{x}\rfloor\sum\limits_{[i,k]|y}\lfloor\frac{B}{y}\rfloor\sum\limits_{[j,k]|z}\lfloor\frac{C}{z}\rfloor\\ f(n)&=\sum\limits_{n|i}\lfloor\frac{A}{i}\rfloor\\ g(n)&=\sum\limits_{n|i}\lfloor\frac{B}{i}\rfloor\\ h(n)&=\sum\limits_{n|i}\lfloor\frac{C}{i}\rfloor\\ &=\sum\limits_{i=1}^{min(A,B)}\sum\limits_{j=1}^{min(A,C)}\sum\limits_{k=1}^{min(B,C)}\mu(i)\mu(j)\mu(k)f([i,j])g([i,k])h([j,k])\\ \end{aligned}\]

直接枚举还是\(O(n^3)\)的。
考虑有可能对答案做出贡献的三元组\((i,j,k)\):

\[\forall i,j,k,\mu(i)\not= 0,\mu(j)\not =0,\mu(k)\not =0,[i,j]\leq mx,[i,k]\leq mx,[j,k]\leq mx \]

\[d=(x,y),x=id,y=jd,(i,j)=1,ijd\leq max(A,B,C) \]

枚举\(d,i,j\)按照这个方法进行建边,然后三元环计数即可。
边数为\(m\)数十万的级别。
\(m\sqrt{m}\)可以进行三元环计数
这样只能计数三元环各不相同的情况。
考虑有一对相同的时候,这种情况我们可以在建边枚举两个点的时候进行统计。
而三个一模一样的就直接枚举这个点是谁就可以了。

T3
生成函数
\(H(x)\)为大小为\(i\)的生成图个数的\(EGF\)
那么有:

\[H(x)=\sum\limits_{i=0}^{+\infty}2^{\binom{i}{2}}x^i \]

然后设\(G(x)\)为大小为\(i\)的连通图的\(EGF\)
那么有:

\[H(x)=\sum\limits_{i=1}^{+\infty}\frac{G^i(x)}{i!}=e^{G(x)} \]

所以:

\[G(x)=ln(H(x)) \]

\(F_{w}(x)\)为由\(w\)个连通块组成的大小为\(i\)的图的个数的\(EGF\)
那么有\(f_{w}(i)=\sum\limits_{j=1}^{i}\binom{i-1}{j-1}g(j)f_{w-1}(i-j)\)
拆一下组合数卷积形式:

\[\frac{f_{w}(i)}{(i-1)!}=\sum\limits_{j=1}^{i}\frac{g(j)}{(j-1)!}\frac{f_{w-1}(i-j)}{(i-j)!} \]

这样就简单了卷积一发就可以了。
然后我们考虑一下题目的贡献。
如果有\(P\)个连通块,那么贡献就是:

\[P^{K}=\sum\limits_{i=0}^{K}\begin{Bmatrix}K\\i\end{Bmatrix}P^{\underline{i}}=\sum\limits_{i=0}^{K}\begin{Bmatrix}K\\i\end{Bmatrix}i!\binom{P}{i} \]

后面那个\(\binom{P}{i}\)转化一下组合意义就是从\(P\)个连通块中选出大小为i$个连通块的子集。
那么就可以用上面求出来的东西计算了。

\[ans=\sum\limits_{i=0}^{K}\begin{Bmatrix}K\\i\end{Bmatrix}i!\sum\limits_{j=1}^{n}f_{i}(j)2^{\binom{n-j}{2}} \]

后面的东西还是可以用卷积预处理。
这样单次询问就可以做到\(O(k)\)了。

posted @ 2020-04-20 16:24  Lrefrain  阅读(149)  评论(0编辑  收藏  举报