【题解】CF1007D Ants

传送门

题意:

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

题解:

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

我们可以树链剖分+线段树优化,这样每条链都对应了 log2n 个点。

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

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

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

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

这个东西显然可以前缀和优化建图。时间复杂度 O(mlog2n)

posted @   静谧时空  阅读(65)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示
主题色彩