- 考虑枚举划分
S
S
S:
∏ S l c m ( a 1 , a 2 , … , a k ) c o e f ( S ) \prod_Slcm(a_1,a_2,\dots,a_k)^{coef(S)} S∏lcm(a1,a2,…,ak)coef(S)
这个可以反演成 g c d gcd gcd
∏ S ∏ T g c d ( a 1 , a 2 , … , a ∣ T ∣ ) c o e f ( S ) ( − 1 ) ∣ T ∣ − 1 \prod_S \prod_Tgcd(a_1,a_2,\dots,a_{|T|})^{coef(S)(-1)^{|T|-1}} S∏T∏gcd(a1,a2,…,a∣T∣)coef(S)(−1)∣T∣−1
考虑一个 p k p^k pk 的贡献
∏ p , k p i k i ∑ S ∑ T ( − 1 ) ∣ T ∣ − 1 [ m i n ( b 1 , b 2 , … , b ∣ T ∣ = k i ] c o e f ( S ) ∏ p i ∑ S ∑ T ( − 1 ) ∣ T ∣ − 1 [ m i n ( b 1 , b 2 , … , b ∣ T ∣ ≥ k i ] c o e f ( S ) \prod_{p,k} p_i^{k_i\sum_{S}\sum_T(-1)^{|T|-1}[min(b_1,b_2,\dots,b_{|T|}=k_i]coef(S)}\\\prod p_i^{\sum_{S}\sum_T(-1)^{|T|-1}[min(b_1,b_2,\dots,b_{|T|}\ge k_i]coef(S)} p,k∏piki∑S∑T(−1)∣T∣−1[min(b1,b2,…,b∣T∣=ki]coef(S)∏pi∑S∑T(−1)∣T∣−1[min(b1,b2,…,b∣T∣≥ki]coef(S)
考虑 d p dp dp 一下
∑ S ∑ T ( − 1 ) ∣ T ∣ − 1 [ m i n ( b 1 , b 2 , … , b ∣ T ∣ ≥ k i ] c o e f ( S ) \sum_{S}\sum_T(-1)^{|T|-1}[min(b_1,b_2,\dots,b_{|T|}\ge k_i]coef(S) S∑T∑(−1)∣T∣−1[min(b1,b2,…,b∣T∣≥ki]coef(S)
就是我们钦定 ∣ T ∣ |T| ∣T∣ 个置换长度为 p i k i p_i^{k_i} piki 的倍数,剩下的随便置换,这个可以组合数算
我们记 f i f_{i} fi 表示当前数为 p k ∗ i p^k*i pk∗i 时的带系数方案数,当然,也可以直接 exp \exp exp(如果有逆元的话)
exp ( ∑ i ≥ 1 − x i i p k ) \exp(\sum_{i\ge 1}-\frac{x^i}{ip^k}) exp(i≥1∑−ipkxi)
现在的复杂度是 ∑ ( n i ) 2 = O ( n 2 ) \sum (\frac{n}{i})^2=O(n^2) ∑(in)2=O(n2)
C o d e Code Code
「USACO 2020 US Open Platinum」Exercise (容斥)(DP)
最新推荐文章于 2021-04-04 23:54:01 发布