CF1067E
CF1067E
求一棵树的所有生成子树的邻接矩阵的秩的和。
\(n\le 5\cdot 10^5\)
Solution
可以考虑一下秩等价于啥,每个点对答案的贡献类似于将它附近的点集体异或 \(1\),如果能够选出一些点使得不存在一个子集的的共同作用可以替换某个点的作用那么就说明 ok。
然后由于事实上我们任意选一个顺序将点加进来都是 ok 的,因为假设 \(A\) 存在子集表示了 \(C\) 那么 \(C\) 显然无用,否则 \(C\) 有用。(类似于线性基)
然后我也不知道为啥,反正答案是这棵树的最大匹配乘以 \(2\)。
求解一棵树的最大匹配是可以自顶而上的贪心的,然后我们拿一个 dp 来计算即可。点 \(x\) 不会被匹配当且仅当它的所有出边都被匹配了,否则它被匹配。
然后如何优雅的避免分类讨论的 dp:考虑将匹配放在上面的节点处考虑,那么一个匹配会不会产生当且仅当这个点的被保留的边的点均为 \(0\) 状态,对玩意儿算方案数,然后乘以子树外的边任意选即可。