【学习笔记】[ABC236Ex] Distinct Multiples

典中典题目。

考虑怎么转化成普通的容斥形式

发现可以将 S S S拆分成若干个集合相加的形式,然后分开求 lcm \text{lcm} lcm算贡献。

感觉和斯特林数有关系。

破防了,题解告诉我们这个容斥系数是 ( − 1 ) ∣ S ∣ − 1 ( ∣ S ∣ − 1 ) ! (-1)^{|S|-1}(|S|-1)! (1)S1(S1)!

可以通过对边集容斥得到这个优美的结果。

原题解不见了。。。

发现可以将 a i = a j a_i=a_j ai=aj的两个点之间连边,这样我们转化成了图计数的问题。

C ( E ) C(E) C(E)表示连上边集 E E E后的连通块结果, F ( P ) F(P) F(P)表示连通块为 P P P时的答案,也就是连通块方案数的乘积。

那么根据经典的容斥原理,答案是 ∑ E ( − 1 ) ∣ E ∣ F ( C ( E ) ) \sum_{E}(-1)^{|E|}F(C(E)) E(1)EF(C(E))

改变求和顺序得到: ∑ P F ( P ) ∑ C ( E ) = P ( − 1 ) ∣ E ∣ \sum_{P}F(P)\sum_{C(E)=P}(-1)^{|E|} PF(P)C(E)=P(1)E

首先要做过这道题 [集训队作业2013] 城市规划 。

G ( x ) G(x) G(x)表示简单无向图的 E G F EGF EGF F ( x ) F(x) F(x)表示简单连通图的 E G F EGF EGF,发现 G ( x ) = ∑ n = 0 ∞ 2 ( n 2 ) x n n ! ( ∑ i = 0 ( n 2 ) ( − 1 ) i ( ( n 2 ) i ) ) = 1 + x G(x)=\sum_{n=0}^{\infty}2^{\binom{n}{2}}\frac{x^n}{n!}(\sum_{i=0}^{\binom{n}{2}}(-1)^i\binom{\binom{n}{2}}{i})=1+x G(x)=n=02(2n)n!xn(i=0(2n)(1)i(i(2n)))=1+x G ( x ) = 1 + F ( x ) 1 ! + F ( x ) 2 2 ! + . . . + F ( x ) n n ! = exp(F(x)) G(x)=1+\frac{F(x)}{1!}+\frac{F(x)^2}{2!}+...+\frac{F(x)^n}{n!}=\text{exp(F(x))} G(x)=1+1!F(x)+2!F(x)2+...+n!F(x)n=exp(F(x)),手算便知 F ( x ) F(x) F(x),这样我们得到了容斥系数。最后用乘法原理即可。

暴力实现,复杂度 O ( 3 n ) O(3^n) O(3n)

为什么是圆排列?我感觉有不用多项式的方法,但是我想不到。

remark \text{remark} remark 但是 N O I P NOIP NOIP已经不考多项式了。。。

你可能感兴趣的:(学习,笔记,机器学习)