首页 > 其他分享 >平面图最小链覆盖 POI2002 Skiers

平面图最小链覆盖 POI2002 Skiers

时间:2024-02-23 20:23:41浏览次数:21  
标签:覆盖 路径 平面图 最小 POI2002 最小链 Skiers 对偶

这道题感觉挺厉害的,记录一下。

题目大意

给一个图,它是个DAG(有向无环图),它是个平面图,它有一个起点和一个终点。求最小的从起点到终点的路径数量,使得存在一组这么多路径可以覆盖这个图的每一条边。

做法 1:

首先,最小链覆盖让我们想到:最小点覆盖

于是我们多设置 \(m\) 个点表示 \(m\) 条边,就转化为 最小可重路径点覆盖,然后拆点 + 二分图匹配即可。

具体的,我们将每个点 \(U\) 拆成 \(U_x\) 和 \(U_y\) 两个点。若 \(A\) 和 \(B\) 有边,那么就连接 \(A_x\) 和 \(B_y\)。容易发现,这样建立新图最后是一个二分图,那么 最小不可重路径点覆盖其实就是 原图的顶点数量 - 二分图最大匹配数

对于 最小可重路径点覆盖 而言,我们考虑如果 \(u\) 可以从原图走到 \(v\),那么就将 \(u\) 连向 \(v\)。可以发现,这样建图就可以转换为 最小不可重路径点覆盖 了。

这样的话可以完成 \(n \le 300\) 的题目。

做法 2:

发现上面的做法少用了一个性质:平面图

偏序集中,我们考虑 Dilworth 定理:最长反链长度 等于 最小链覆盖个数。

根据下图感性理解一下,最长反链选择的“链”,在平面图里是一段相邻的平面,所以就考虑平面图的对偶图,对应上就是一段链!

image

所以如果建出对偶图,那么结果就是,对偶图的最长链,就可以考虑 DAG 上 dp。

但是如果要求出平面图的每一个面再暴力拓扑的话就太麻烦了,其实我们考虑将平面从左往右进行 dp,然后将 dp 的值存到右侧的边上,然后如果存在环的话,可以发现,我们能分成“左侧” 和 “右侧”,然后用左侧的边更新右侧的边即可。

时间复杂度是 O(n),显然可以做到 \(n <= 10^5\) 的题目。

总结

  1. 首先是 Dilworth 定理,可以将平面图的最长链覆盖 转换为 其对偶图的最长链。

  2. 在平面图的对偶图上操作的时候,可以考虑从左往右的顺序,然后把一些信息存到边上,就实现起来容易一点。

标签:覆盖,路径,平面图,最小,POI2002,最小链,Skiers,对偶
From: https://www.cnblogs.com/wangzhongyuan/p/18030304

相关文章

  • P8854 [POI2002] 超级马 题解
    这题其实就是搜索,不知道怎么评绿的。题意有一个大小无限的棋盘,有一只马,给定\(n\)种跳法,判断马是否能跳到棋盘所有点。题解搜索马是否可以跳到他上下左右的四个点,因为只要能跳到这四个点,就可以以这四个点为基础跳到其他所有的点。这里有一些细节需要处理:因为每次操作能是......
  • P5943 [POI2002] 最大的园地 题解
    题目传送门前置知识单调栈简化题意在一个\(n\timesn\)的正方形内找到最大的由\(0\)组成的子矩形的面积。解法令\(f_{i,j}(1\lei,j\len)\)表示从\((1,j)\)到\((i,j)\)中以\((i,j)\)结尾的均为\(0\)的子串长度,即\((i,j)\)上面可延伸的最大距离(子矩形的......
  • P8855 [POI2002]商务旅行
    简要题意给出一个\(N\)个节点的树和一个长度为\(M\)的序列\(S\)。你需要从\(1\)出发,依次经过\(S\)中的所有点,求至少需要经过的边数。\(1\leN\le30000\)思......