一种比较牛的东西,典型标志为 \(n \le 18\),计数满足特殊性质而且连通的状物。
有一张 \(n\) 个点 \(m\) 条边的简单无向图,问选出一个边集,使得 \(n\) 个点与这些边构成的图连通,并且图是二分图的方案数。
\(1\leq n\leq 17,n-1\leq m\leq \frac{n(n-1)}{2}\)。
通用套路是先不理连通算方案数,设 \(h_S\) 表示有多少条边两端点都在集合 \(S\) 中。
一个图是二分图的充要条件是恰好能将图黑白染色,那我们枚举集合中为黑色的子集,设 \(g_S\) 为图是二分图的方案数。
那么有 $g_S= \displaystyle\sum_{t \subseteq S} 2^{h_S-h_T-h_{S \bigoplus T}} $ 即黑白两色内部不能染色。
接下来剪掉不连通的,这个就是连通性容斥套路,设 \(f_S\) 为最终集合的答案。
我们钦定一个集合 \(S\) 中的最小点为连通块的根,(任意的点都可以,只是最小的点用 \(lowbit\) 方便计算)。
我们枚举当前这个最小点当前所在连通块集合 \(T\),那么它对当 \(S\) 的贡献要减去 \(f_T \times g_{T \bigoplus S}\) 即当前连通块答案乘上不在当前块中任意算边的方案。
所以 \(f_S=g_S -\displaystyle\sum_{T \subset S \or lowbit(T)=lowbit(S)} f_T \times g_{T\bigoplus S}\)
复杂度 \(O(3^n)\)
有 \(n\) 个点,给定两个长度为 \(m\) 的序列 \(a_i,b_i\)。
对于一个 \(1\sim m\) 的排列 \(P\),将 \(a_i\) 与 \(b_{P_i}\) 连边后,其权值定义为这 \(n\) 个点 \(m\) 条边所构成的图的连通块个数。
对于所有 \(m!\) 个排列 \(P\),求它们权值的期望值。
\(1 \le n \le 17,1\ \le m \le 10^5\)
典中典之先期望转计数。
还是先啥都不管设 \(ha_S,hb_S\) 分别表示 \(S\) 的子集中有出现了多少 \(a_i,b_i\),设 \(h_S\) 表示只在集合 \(S\) 互相连边的方案数。
显然有 \(h_S=[ha_S=hb_S] ha_S !\),然后使用连通性容斥设 \(g_S\) 表示使得集合 \(S\) 连通的方案数。
和上题类似,\(g_S=h_S-\displaystyle\sum_{T \subset S \or lowbit(T)=lobit(S)}g_T \times h_{T \bigoplus S}\)
接下来设 \(f_S\) 表示集合 \(S\) 所有方案连通块数量之和,仍然需要枚举有集合最小值的子集 \(T\) 作为最后一块加入集合(不钦定要算重)
那么也就有 \(f_S= \displaystyle\sum_{T \subset S \or lowbit(T)=lowbit(S)} g_j \times f_{T \bigoplus S}+g_j \times h_{T\bigoplus S}\)
前后两部分分别代表新加入的连通块对方案数和连通块数量的贡献。
复杂度 \(O(3^n)\)
这种题目需要注意的是枚举子集是否空集以及全集,需要画图慢慢理解一下。
Upd:这种题通过一些神妙的数学手段也许能变得更优,等实力变强了再来补。
标签:连通,le,连通性,lowbit,容斥,times,bigoplus,集合 From: https://www.cnblogs.com/Hanghang007/p/17876041.html