AGC035F Two Histograms

很猎奇的转化,但是后面的计算就很简单了。

很难发现只有下面这种情况会重复。

设钦定出现 ii 个情况的方案数为 f(i)f(i),那么显然有:

Ans=i=0min(n,m)(1)i×f(i)Ans=\sum\limits_{i=0}^{\min(n,m)}(-1)^i\times f(i)

容易理解:

f(i)=(ni)×(mi)×i!×(n+1)mi×(m+1)nif(i)={n\choose i}\times {m\choose i}\times i!\times (n+1)^{m-i}\times (m+1)^{n-i}

LibreOJ β Round 4 求和

不妨设 n<mn<m,那么:

d=1ni=1nj=1mμ2(d)[gcd(i,j)=d]\sum\limits_{d=1}^n\sum\limits_{i=1}^n\sum\limits_{j=1}^m \mu^2(d)[\gcd(i,j)=d]

提出来:

d=1nμ2(d)i=1ndj=1md[gcd(i,j)=1]\sum\limits_{d=1}^n\mu^2(d)\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]

反演:

f(k)=i=1nj=1m[gcd(i,j)=k]f(k)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m [\gcd(i,j)=k]

g(d)=dkf(k)=nd×mdg(d)=\sum\limits_{d\mid k}f(k)=\lfloor\dfrac{n}{d}\rfloor\times\lfloor\dfrac{m}{d}\rfloor

反演得到:

f(k)=kdμ(dk)×g(d)f(k)=\sum\limits_{k\mid d}\mu(\dfrac{d}{k})\times g(d)

所以:

f(1)=k=1nμ(k)×nk×mkf(1)=\sum\limits_{k=1}^{n}\mu(k)\times \lfloor\dfrac{n}{k}\rfloor\times \lfloor\dfrac{m}{k}\rfloor

带回去得到:

d=1nμ2(d)t=1ndμ(t)×ndt×mdt\sum\limits_{d=1}^n\mu^2(d)\sum\limits_{t=1}^{\lfloor\frac{n}{d}\rfloor}\mu(t)\times \lfloor\dfrac{n}{dt}\rfloor\times\lfloor\dfrac{m}{dt}\rfloor

T=dtT=dt 得到:

T=1nnT×mTdTμ2(d)×μ(Td)\sum\limits_{T=1}^n\lfloor\dfrac{n}{T}\rfloor\times \lfloor\dfrac{m}{T}\rfloor\sum\limits_{d\mid T} \mu^2(d)\times \mu(\dfrac{T}{d})

手玩发现,当 TT 为平方数是后面为 μ(T)\mu(\sqrt{T}),否则为 00

那么直接预处理 μ\mu 的前缀和,在调用的时候调用 \sqrt{} 之后的值就行了。

ARC101E Ribbons on Tree

考虑 O(n3)O(n^3) 怎么怎么解决,设 fi,jf_{i,j} 表示节点 ii 的子树之内有 jj 个没有匹配。

那么为了把 ifaii\to fa_i 这条边覆盖,就需要在 ii 这个子树中的节点至少有一个连接到这个子树之外的节点,所以有转移方程:

ffa(x),i+j2kffa(i),i+j2k+fx,i×ffa(x),j×(ik)×(jk)×k!f_{fa(x),i+j-2k}\gets f_{fa(i),i+j-2k}+f_{x,i}\times f_{fa(x),j}\times {i\choose k}\times{j\choose k}\times k!

其中 kk 就是选择要匹配的节点的数量,但是这个方法很没有前途。

VJO 曾经说过,正难则反,考虑容斥出答案。

F(S)F(S) 表示 SS 这个集合中的边都钦定不选的方案数,那么根据容斥原理答案就是:

SE(1)SF(S)\sum\limits_{S\subseteq E}(-1)^{\lvert S\rvert}F(S)

容易理解其实有 SS 这些边不被覆盖,就相当于把 SS 里面的边删除然后在每个剩余的连通块里面乱连。

那么对于一个大小为 NN 的连通块,我们记它乱连的方案数为 g(N)g(N),那么显然:

g(N)={0N is odd.N×(N2)××3×1OtherWise.g(N)=\left\{\begin{matrix} 0 & N\ \text{is odd.} \\ N\times(N-2)\times\cdots\times3\times 1 & \text{OtherWise.}\end{matrix}\right.

fx,if_{x,i} 表示在以 xx 为根的子树里,ii 所在的连通块的大小,那么有转移方程:

ffa(x),i+jffa(x),i+j+fx,i×ffa(x),jf_{fa(x),i+j}\gets f_{fa(x),i+j}+f_{x,i}\times f_{fa(x),j}

ffa(x),iffa(x),iffa(x),i×fx,j×g(j)f_{fa(x),i}\gets f_{fa(x),i}-f_{fa(x),i}\times f_{x,j}\times g(j)

容易理解上面的转移分别代表 fa(x)fa(x)xx 在一个连通块和 fa(x)fa(x)xx 在两个连通块的情况。

最后的答案为 i=1nf1,i×g(i)\sum\limits_{i=1}^n f_{1,i}\times g(i),时间复杂度为 O(n2)O(n^2)

CF961G Partitions

一直想做一直没做,原因是太难了而且上一次在哪里研究多项式科技耽误了很多时间。

把权值为 wiw_{i} 的物品看作 wiw_{i} 个权值为 11 的物品,对于 S\lvert S\rvert 的可以看作对 SS 中所有的元素都贡献了 11

那么对于自己给自己的贡献,显然是 {nk}\begin{Bmatrix} n\\ k\end{Bmatrix}

对于别人给自己的贡献显然是 {n1k}\begin{Bmatrix} n-1\\ k\end{Bmatrix}

所以答案为:

({nk}+(n1)×{n1k})×i=1nwi\begin{aligned} (\begin{Bmatrix} n\\ k\end{Bmatrix}+(n-1)\times \begin{Bmatrix} n-1\\ k \end{Bmatrix})\times \sum\limits_{i=1}^n w_{i} \end{aligned}

时间复杂度为 O(nlogV)O(n\log V),另外斯特林数用通项公式处理。