To_Heart—题解——BZOJ 4671
题目链接
题解
虽然图很多,但是节点数只有 10。考虑枚举节点的联通状态,看哪些图是对其有影响。
定义 f i f_i fi 为有 i 个联通块的方案数。但因为是异或所以并不好处理。但是如果把条件放宽呢?定义 g i g_i gi 表示至少有 i 个联通块的方案数。发现这种定义下并不关心枚举的联通状态内部是否真正的联通,因为划分节点后已经满足最少有 i 个了。所以内部的边的异或状态并不关心,只需要每两个联通块之间有边即可。然后把每个图的需要的边状压一下放入线性基中,假设基的个数为 k ,那么当前这种划分对于 g i g_i gi 的贡献就是 2 s − k 2^{s-k} 2s−k
再考虑 g i g_i gi 和 f i f_i fi 的关系。对于 g i g_i gi ,假设真正分出了 n 个联通块,而我们确规定把他们划分在了 i 个块中。发现方案数满足第二类斯特林数,所以得到:
g i = ∑ j n { i j } f i g_i=\sum^{n}_{j} \left\{ ^j_i\right\} f_i gi=j∑n{ij}fi
然后斯特林反演即可。