2022牛客多校#6 C. Forest

Posted 欣君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022牛客多校#6 C. Forest相关的知识,希望对你有一定的参考价值。

题目大意

给定 n ( 1 ≤ n ≤ 16 ) n(1 \\leq n \\leq 16) n(1n16) 个点 m ( 0 ≤ m ≤ 100 ) m(0 \\leq m \\leq 100) m(0m100) 条正边权的无向简单图,求每个生成子图的最小生成森林的权值和,答案对 998244353 998244353 998244353 取模。

定义点集 V V V ,边集 E E E 的图 G G G 的最小生成森林为:

  • 最小生成森林的边集 S ⊆ E S \\subseteq E SE
  • 任意两个节点的连通性不变
  • S S S 为满足以上条件的最小权值。

G G G 的生成子图为具有点集 V V V 和边集为 E E E 的子集所构成的图。

题解

类似题目 P6789

单独考虑按边权值从小到大枚举每条边的贡献,边权值第 i i i 小的边为 e i = ( u i , v i , w i ) e_i=(u_i,v_i,w_i) ei=(ui,vi,wi)
由于求所有方案的总权值和,因此边权值相同的边任意排序后不影响结果。

定理:

  • 一条边在生成子图的最小生成森林中,当且仅当该子图中其他权值更小的点不能使得两端联通。

对于边 e i = ( u i , v i , w i ) e_i=(u_i,v_i,w_i) ei=(ui,vi,wi) ,求有多少生成子图的最小生成森林包含该边。

边编号在 [ i + 1 , m ] [i+1,m] [i+1,m] 范围内的边,不影响 e i e_i ei 的选取,方案数为 2 m − 1 − i 2^m-1-i 2m1i

考虑边编号在 [ 1 , i − 1 ] [1,i-1] [1i1] 范围内的边。
设边编号在 [ 1 , i − 1 ] [1,i-1] [1,i1] 范围内,且端点均在点集 S S S 内的边数为 C n t i − 1 ( S ) Cnt_i-1(S) Cnti1(S) ,有转移式
C n t i ( S ) = [ u i ∈ S & v i ∈ S ] + C n t i − 1 ( S ) Cnt_i(S)=[u_i\\in S\\&v_i \\in S]+Cnt_i-1(S) Cnti(S)=[uiS&viS]+Cnti1(S)

设边编号在 [ 1 , i − 1 ] [1,i-1] [1,i1] 范围的边构成连通块 S S S ,则

  1. 两端在 S S S 外的边,可以任意选取。方案数为 2 C n t i − 1 ( V − S ) 2^Cnt_i-1(V-S) 2Cnti1(VS)
  2. 只有一段在 S S S 内的边,均不能选取,否则连通块就不是 S S S 了。方案数为 1 1 1
  3. 两端都在 S S S 内的边,有一部分需要被选取使得构成连通块 S S S 。设方案数为 f i − 1 ( S ) f_i-1(S) fi1(S)

考虑计算 f i − 1 ( S ) f_i-1(S) fi1(S) ,等于总方案数-至少有两个连通块的方案数。
可以直接计算,枚举 S S S 中包含编号最小的节点的连通块 T T T ,则剩余部分为 S − T S-T ST ,有
f i − 1 ( S ) = 2 C n t i − 1 ( S ) − ∑ T ⊂ S , l o w b i t ( S ) = l o w b i t ( T ) f i − 1 ( T ) ⋅ 2 C n t i − 1 ( S − T ) f_i-1(S)=2^Cnt_i-1(S)-\\sum_T \\subset S,lowbit(S)=lowbit(T)f_i-1(T)\\cdot 2^Cnt_i-1(S-T) fi1(S)=2Cnti1(S)TS,lowbit(S)=lowbit(T)fi1(T)2Cnti1(ST)

上式的复杂度为 O ( 3 n ) O(3^n) O(3n) ,搭配枚举 m m m ,复杂度为 O ( 3 n m ) O(3^n m) O(3nm) ,约 4e9 ,勉强可以计算出结果。

e i e_i ei 的贡献为
W i = w i × ( 2 m − 1 − 2 m − i − 1 × ∑ S ⊆ V , u i ∈ S , v i ∈ S 2 C n t i − 1 ( V − S ) f i − 1 ( S ) ) W_i=w_i\\times(2^m-1-2^m-i-1 \\times \\sum_S\\subseteq V,u_i \\in S,v_i \\in S2^Cnt_i-1(V-S)f_i-1(S)) Wi=wi×(2m12mi1×SV,uiS,viS2Cnti1(VS)fi1(S))

也可以考虑加入 e i e_i ei 边,从 f i − 1 ( S ) f_i-1(S) fi1(S) 递推到 f i ( S ) f_i(S) f2022牛客多校#6 C. Forest

2022牛客多校#4 C. Easy Counting Problem

2022牛客多校#4 C. Easy Counting Problem

2022牛客多校#4 C. Easy Counting Problem

2022牛客多校3补题

2022牛客多校3补题