首页 > 其他分享 >【题解】CF1007D Ants

【题解】CF1007D Ants

时间:2022-08-26 22:14:02浏览次数:168  
标签:子树 log 题解 CF1007D 不选 Ants

传送门

题意:

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

题解:

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

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

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

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

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

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

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

标签:子树,log,题解,CF1007D,不选,Ants
From: https://www.cnblogs.com/Vomedakth/p/16629398.html

相关文章

  • 题解 UVA10791
    前言:数学符号约定:\(p\):任意一个质数\(n\)或\(m\):任意一个正整数\(a_i\):唯一分解时质数的指数\(A\):集合若无特殊说明,本篇题解的数学符号将会严格按照上......
  • 20220823 模拟赛题解
    T1文件压缩DecriptionlinkSolution可以根据\(S'\)和\(p\)求出第一个字符,然后把\(S'\)sort一遍后得到字符串\(T\),那么我们就可以求出每一个字符的前驱和后继,所......
  • LeetCode 链表的中间结点算法题解 All In One
    LeetCode链表的中间结点算法题解AllInOnejs/ts实现重排链表链表的中间结点原理图解//快慢指针functionmiddleNode(head:ListNode|null):ListNode|n......
  • k8s问题解决
    问题1:问题描述:k8s中Terminating状态pod不能删除[root@master~]#kubectlgetpods-nmsNAMEREADYSTATUSRESTARTSAGEportal-78......
  • Unable to create an object of type 'DbContext'问题解决,网上搜来的没一个对的。
    用了很久的EFCore了,第一次遇到这个问题,觉得很奇怪,baidu了一下,都是要提供设计时工厂的答案。很明显这个做法是有问题的,都是DI的年代了,你的DbContext又不是动态生产了一堆......
  • P1399 [NOI2013] 快餐店 题解
    题目大意求一棵基环树的重心。即一个点,使得树上到其距离最长的点到其的距离最短。注意,这个点不一定是一个节点,可以在树上的任意位置。输出树上到其距离最长的点到其的距离......
  • P8443 题解
    前言题目传送门!更好的阅读体验?普及组月赛第一题。别的题解语言有点高深,我补篇题解。思路显然,\(\lfloor\dfrac{l}{x}\rfloor,\lfloor\dfrac{l+1}{x}\rfloor,\cdot......
  • P8431 题解
    前言题目传送门!更好的阅读体验?这题题解都写得特别复杂,蒟蒻看不懂。因此,我补一篇简单的贪心题解。思路题目等同于求最小的\(p\)使得\(f(p)>n\),则\((p-1)\)就是答......
  • P7535 题解
    前言题目传送门!更好的阅读体验?比赛时考到了这一题,于是写一篇题解纪念一下。思路设\(dp_{i,j}\)表示前\(i\)张钞票分给两人,两人差尽可能接近\(j\)的情况下,获得......
  • CF1066C 题解
    前言题目传送门!更好的阅读体验?本题是简单的双端队列练手题。思路题意大致如下:执行双端队列push_front()操作。执行双端队列push_back()操作。查询\(\min\{m......