题意:
给定k颗有n个点的树对于每个点对 (i,j),求出其在每棵树上的路径经过的点(含端点)的并集大小。
做法:
一个比较简单的想法是搞出每个(i,j)在第k颗树上的点的集合,然后所有树并一下,这个再用bitset优化一下,然后有人就过了,而我这位大常数选手就没过。
首先容斥为求不经过点的交。考虑路径(i,j)如果对于一个点x,在第k颗树中,(i,j)没有包含x,然后i,j应该在以x为根的树的同一棵子树中。那如果我们枚举一个点,如果这个点在所有树中,有一个不满足i,j应该在以x为根的树的同一棵子树中这个条件的话,那么这个点就会被计算进贡献里。考虑如何加速,如果我们们对每一棵子树都赋一个随机权值,如果以x为根的i所在的子树权值之和等于以x为根的j所在的子树权值之和,那么这个点就不应该被算进去,然后就做完了
标签:子树,省选,T1,2024,为根,权值,树中 From: https://www.cnblogs.com/wuhupai/p/18144193