Loading

【题解】CF1007D Ants

传送门

题意:

\(m\) 对链,每对链要选择一条,使得选择的链两两不交,求一组方案。

题解:

一眼看上去就是一个 2-sat,考虑一种暴力的做法,枚举每一条边,覆盖这条边的链两两连边。

我们可以树链剖分+线段树优化,这样每条链都对应了 \(\log^2 n\) 个点。

覆盖一条边的所有链恰好就是这个边对应的叶子及其祖先的所有节点上的链。

显然选择一个链以后,线段树中其子树中和祖先中的链都不能选了。

因为原命题与逆否命题等价。

所以 \(x\)\(\to x\) 子树都不选的逆否也成立,即 \(x\) 子树中的选 \(\to x\) 不选成立,所以这道题只考虑子树中的链不能选就可以了。

这个东西显然可以前缀和优化建图。时间复杂度 \(O(m\log^2 n)\)

posted @ 2022-08-26 21:59  静谧时空  阅读(78)  评论(1)    收藏  举报