首页 > 其他分享 >CF1674G Remove Directed Edges 题解

CF1674G Remove Directed Edges 题解

时间:2024-08-10 20:38:49浏览次数:11  
标签:Directed 竞赛 哈密顿 题解 可以 点集 Edges 我们 可爱

CF1674G

给出一个 \(n\) 点 \(m\) 边的有向无环图,你需要从中移除一些边,使得对于每一个点,其入度减少(如果原来有入边),出度也减少(如果原来有出边)。

当删完边以后,如果有一个点集,满足对于任两点 \((i,j)\) 可以从 \(i\) 走到 \(j\) 可以从 \(j\) 走到 \(i\),那就称其为可爱的。

现在要构造一种删边方案,使得删边后其中一个可爱的点集最大,输出这个点集大小。

\(1 \leq n \leq 2 \cdot 10^5, 0 \leq m \leq 2 \cdot 10^5\)

  • 这题无论对于删边操作和可爱的点集操作咋一看都完全没有思路

  • 当没有思路的时候,考虑把原问题转化成数学语言解释

  • 发现可爱的点集在强连通分量缩点后一定是一条链

  • 但这个性质不太好看,咋一看还是毫无思路

  • 为了让他更好看,我们可以发现,那些被我们缩的点考虑更严格的限制住他

  • 换言之,我们考虑直接把要缩的点拆成一条链,则一个可爱的点集就可以直接描述成一条链

  • 感性的猜测结束,我们来理性证明一下一个可爱的点集是一条链是一个充要条件

  • 必要性:
    • 非常显然,对于点集中的两点 \(u,v\),顺着链走一定满足条件
  • 充分性:
    • 考虑把原图中任两点 \(u,v\) 满足可以从 \(u,v\) 的在新图上连一条有向边 \((u,v)\),则这张图变成一张竞赛图,我们只需要证明这张竞赛图可以有一种方法划分出一条哈密顿路径即可

    • 实际上这是一个比较重要的结论,与之同等重要的结论是强连通的竞赛图一定有一种方法划分出一条哈密顿回路

    • 具体证明的话,可以考虑从这张竞赛图的某个入度为 \(0\) 的点跑出一棵 \(dfs\) 树,按便利顺序给根节点的所有儿子按续编号,可以注意到从编号高的子树中一定有横插边连入编号低的子树。为了方便考虑,我们先考虑只有两个儿子的情况

    • 因为原图是竞赛图,这两个儿子中的每个节点都有从 \(2\) 到 \(1\) 的横插边相连,也就是说,我们交换 \(dfs\) 顺序,从第 \(2\) 个儿子先便利,一定可以把第 \(1\) 个儿子消掉

    • 考虑重复这一操作,我们从第 \(3,4,\cdots,k\) 个儿子一次便利,每次都可以消去前一个儿子,最终就只会把根节点削成只有一个儿子

    • 因此,我们可以递归到这一个儿子,重复上述过程,最终可以把整张竞赛图缩成一条链

    • 我们按照这张图中链的连接方式在原图中连接点集中节点,得到的点集一定是可爱的

    • 拓展
      • 虽然证明强连通竞赛图有哈密顿回路和这题没有一点关系,但还是在这里拓展一一下

      • 我们在竞赛图有哈密顿路径的基础上抽出这条链,按从左向右的方向拜访链路这上面一定存在很多除链路外向前向后的道路

      • 如图,我们找到从后面连向第一个点的一条边 \((b,a)\),因为原图是强连通的,一定可以找到这样一条边。同理,我们找 \(b\) 后一点 \(c\) 是的他是第一个在 \((a,b)\) 之间有一个 \(c\) 有连边 \((d,c)\) 的

      • 因为 \(d\) 是第一个有向前连边的,所以 \(d-1\) 一定是向后连边的,我们取 \((c-1,d-1)\) 这条边

      • 那么我们就可以注意到我们连成了 \(d \to c \to b \to a \to c-1 \to d-1 \to d\) 这条道路

      • 同样的构造可以在之间穿插,最终构成了一个哈密顿回路

  • 接下来我们考虑这条链需要满足什么条件,容易发现:

    • 如果链上的中间某一个点入度为 \(1\) 或者出度为 \(1\),则不合法

    • 如果链头的出度为 \(1\) 或者链尾的入度为 \(1\),则不合法。

  • 转化为一个多源最长路的模型 \((DAG)\),可以扫一遍 \(dp\) 线性求解

  • 最终复杂度 \(O(n)\)

标签:Directed,竞赛,哈密顿,题解,可以,点集,Edges,我们,可爱
From: https://www.cnblogs.com/fox-konata/p/18352751

相关文章

  • CF1863E Speedrun 题解
    CF1863E你在玩一个游戏,要完成\(n\)个任务。其中对于每个任务\(i\),它只能在某一天的第\(h_i\)时刻完成。游戏每天有\(k\)个小时,分别编号为\(0,1,...k-1\)。给出\(m\)对任务间的依赖关系,\((a_i,b_i)\)表示\(a_i\)必须比\(b_i\)先完成。保证依赖关系不形成环。完......
  • 洛谷 P10852 Awaken——题解
    洛谷P10852题解传送锚点摸鱼环节【MX-X2-T1】「CfzRound4」Awaken题目背景能否等到梦醒了的时候。题目描述月做了一个梦。在梦中,她拿到了一个长度为\(n\)的整数序列\(a_1,\ldots,a_n\),其中\(\bm{n\ge5}\)。梦醒了。月忘记了这个序列中的一部分元素,留下了空白......
  • P4933 大师 题解
    题目传送门思路动态规划看到题目就想到了最长上升子序列。类比最长上升子序列,发现多了一个要求,可以多开一维。设\(f_{i,j}\)表示以\(i\)为结尾,\(j\)为公差的序列的长度(点的个数$-1$),那么答案就为\[\sum_{i=1}^{n}\sum_{j=-\max(v)}^{\max(v)}f_{i,j}\]看上去......
  • ABC201E Xor Distances 题解
    ABC201EXorDistances题解题目大意给定一个带权树,求树上每两点的简单路径上的边权的异或和的和。形式化的,定义\(dis(i,j)\)为\(i\)到\(j\)的简单路径上的边权的异或和,求\(\large\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n\text{dis}(i,j)\)。Solve令\(\largef(u)=......
  • [AGC052B] Tree Edges XOR
    好题,可以直接作为套路记录一下。[AGC052B]TreeEdgesXOR题目大意:给你一棵树,有奇数个点,每个边有边权\(w_i\)。每次你可以选出一条边,将和这条边的所有相邻的边都异或这条边的边权,问你能否得到最终状态(操作次数不定)。思路:首先,上来会发现每次操作影响的边十分多,肯定无法直接维......
  • 洛谷 P1127 词链——题解
    洛谷P1127题解传送锚点摸鱼环节词链题目描述如果单词\(X\)的末字母与单词\(Y\)的首字母相同,则\(X\)与\(Y\)可以相连成\(X.Y\)。(注意:\(X\)、\(Y\)之间是英文的句号.)。例如,单词dog与单词gopher,则dog与gopher可以相连成dog.gopher。另外还有一些例子:dog......
  • CF1155C 题解
    题目传送门题目大意:给定一个长度为\(n\)的单增序列\(a\)和一个长度为\(m\)的序列\(b\),询问是否存在一个正整数\(y\)使得\(a_1\equiva_2\equiv\cdots\equiva_n\equivy\space(\bmod\spacep)\),且\(p\)在序列\(b\)中出现过。思路:将条件转化一下,得:是否存在一个......
  • 08-08 题解
    08-08题解地址A-CF1420Eluogu翻译更正ifhegivesnomorethatkorders对于至多k次操作,题面没有翻译出来思路怎么算贡献?贡献(被保护)出现在「处在任意两个不同的0的连续段的守卫」之间,而处于同一连续段的守卫之间没有贡献设一共\(cnt\)个\(0\),每个连续......
  • 提高组:玩具谜题 题解
    题目描述小南有一套可爱的玩具小人,它们各有不同的职业。有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图:这时singer告诉小南一个谜题:“眼镜藏在我左数第 33 个玩具小人的右数第 11 个玩具小人的左数第......
  • 08-09 题解
    08-09题解A小水题思路假设我们选定了当前子序列的绝对众数\(x\),那么该序列里最多再放\(num_x-1\)个其他数字为了分出最少的子序列,肯定要让每个子序列在拥有绝对众数的同时能消化尽量多的其他数字由此,可以得到一个贪心策略:每次取出出现次数最多的一个数字,消掉出现......