随笔分类 -  图论类

摘要:题意:给你一张DAG,让你选取最多的点,使得这些点之间互相不可达。 思路:此问题和最小路径可重复点覆盖等价,先在原图上跑一边传递闭包,然后把每个点拆成两个点i, i + n, 原图中的边(a, b)变成(a, b + n),跑一变网络流, 答案就是n - maxflow; 代码: 阅读全文
posted @ 2019-10-17 19:12 维和战艇机 阅读(287) 评论(0) 推荐(0)
摘要:题意:给你一个n个点m条边的图,有若干组询问,每次询问会选择图中的一些边删除,删除之后问此图是否联通?询问之间相互独立。此题强制在线。 思路:首先对于这张图随便求一颗生成树,对于每一条非树边,随机一个权值。树边的权值为所有覆盖这条树边的非树边的权值异或和。覆盖是指这条边是个返祖边,并且一端在父节点方 阅读全文
posted @ 2019-09-02 16:35 维和战艇机 阅读(192) 评论(0) 推荐(0)
摘要:题意:给你一张n个点m条边的有向图,问这张有向图的所有路径中第k短的路径长度是多少?n, m, k均为5e4级别。 思路:前些日子有一场div3的F和这个题有点像,但是那个题要求的是最短路,并且k最大只有400。这个题的做法其实是一个套路(没见过QAQ)。 首先把每个点的出边按边权从小到大排序,把每 阅读全文
posted @ 2019-08-23 18:40 维和战艇机 阅读(651) 评论(2) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/mengxiang000000/article/details/52472696 代码: 阅读全文
posted @ 2019-08-06 12:27 维和战艇机 阅读(129) 评论(0) 推荐(0)
摘要:题意:有一个n * n的棋盘,每个棋盘有某些矩形区域被染成了黑色(这些矩形区域有可能相交),问把所有黑色区域染成白色的最小花费是多少?你每次可以选择把一个矩形区域染成白色,花费是染色的矩形区域长和宽的最小值。 思路:容易发现,假设一个矩形的坐标是(l1, r1, l2, r2),假设(l2 - l1 阅读全文
posted @ 2019-08-02 20:53 维和战艇机 阅读(573) 评论(3) 推荐(0)
摘要:题意:给你n个数,现在让你选择一个数目最大的集合,使得集合中任意两个数的二进制表示至少有两位不同,问这个集合最大是多大?并且输出具体方案。保证n个数互不相同。 思路:容易发现,如果两个数不能同时在集合中,这两个数的二进制表示一定只有一位不同(因为n个数互不相同,所以一定不会有两个数的二进制位一定相同 阅读全文
posted @ 2019-08-02 00:12 维和战艇机 阅读(329) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/mitsuha_/article/details/86482347 如果一条边(u, v),v的拓扑序小于u, 那么(u, v)会形成环,要反向。 代码: 阅读全文
posted @ 2019-07-08 00:36 维和战艇机 阅读(404) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927 在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边。 代码: 阅读全文
posted @ 2019-07-03 23:40 维和战艇机 阅读(268) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,要求对这张图进行删边操作,要求删边之后的图的总边数 >= ceil((n + m) / 2), 每个点的度数 >= ceil(deg[i] / 2)。(deg[i]是原图中i的度数) 思路1:模拟 + 乱搞 直接暴力删就行了,读入边之后随机打乱一下就很难被hack了。 代码: 阅读全文
posted @ 2019-06-29 12:57 维和战艇机 阅读(464) 评论(0) 推荐(0)
摘要:题意:给你一颗树,问这颗树是否存在一个根,使得对于任意两点,如果它们到根的距离相同,那么它们的度必须相等。 思路1:树的重心乱搞 根据样例发现,树的重心可能是答案,所以我们可以先判断一下树的重心可不可以。如果不行,剩下的只可能是度为1点当根了。当然,我们不能枚举所有度为1的点,不然一个菊花图就超时了 阅读全文
posted @ 2019-06-12 21:49 维和战艇机 阅读(616) 评论(0) 推荐(0)
摘要:题意及思路:http://ydc.blog.uoj.ac/blog/12 在求出树的直径的中心后,以它为根,对于除根以外的所有子树,求出子树中的最大深度,以及多个点的最大深度的lca,因为每个点的最长路径一定经过根,所以找到最大深度的子树,然后在这个点和最大深度的lca上树上差分一下就好了。注意,此 阅读全文
posted @ 2019-06-10 20:56 维和战艇机 阅读(522) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/zjp-shadow/p/9562888.html 这题由于性质特殊,可以用01BFS来进行DP的转移。 代码: 但是实际上,遇到有后效性的DP方程时,如果是一个DAG,一般用spfa来进行DP的状态转移,因为spfa是迭代的思想,如果所有 阅读全文
posted @ 2019-06-03 21:57 维和战艇机 阅读(245) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/Yuzao/p/8494024.html 最小割树的实现参考了这篇博客:https://www.cnblogs.com/coder-Uranus/p/9771919.html 代码: 阅读全文
posted @ 2019-05-31 12:47 维和战艇机 阅读(299) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/yzyyylx/article/details/90145400 这题主要巧妙在分析了最短路算法的性质,得出大小小于等于3的连通块一定不会被再次访问的结论。 代码: 阅读全文
posted @ 2019-05-27 20:39 维和战艇机 阅读(301) 评论(0) 推荐(0)
摘要:题意:给你一张图,问最少保留多少条边,使得这张图是边双联通分量。 思路:如果一个点集中的点已经是边双联通分量,那么从这个点集中的点x出发,经过若干个不是点集中的点,回到点集中的点y(x可能等于y),那么这条路径上的点和原来的点就构成了一个新的边双联通分量。 设dp[i]是状态i中的点构成边双联通分量 阅读全文
posted @ 2019-05-23 16:18 维和战艇机 阅读(379) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,无向图中每条边有颜色。有两种操作,一种是询问从x到y是否有双彩虹路,一种是在x到y之间添加一条颜色为z的边。双彩虹路是指:如果给这条路径的点编号,那么第i个点和第i - 1个点相连的边与第i个点和第i + 1个点相连的边颜色一样,其中i是偶数。 思路:这个问题相当于初了最后一步 阅读全文
posted @ 2019-05-20 16:52 维和战艇机 阅读(416) 评论(0) 推荐(0)
摘要:题意:给你一张无向图,有若干次操作,每次操作会修改一条边的边权,每次修改后输出1到n的最短路。修改相互独立。 思路:我们先以起点和终点为根,找出最短路径树,现在有两种情况: 1:修改的边不是1到n的最短路上的边,那么可能出现的情况就是这条边的权值变得足够小,出现了新的最短路,那么我们只需判断一下是不 阅读全文
posted @ 2019-05-20 09:12 维和战艇机 阅读(1221) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/dd-bond/p/10859864.html 代码: 阅读全文
posted @ 2019-05-17 23:15 维和战艇机 阅读(199) 评论(0) 推荐(0)
摘要:题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可。我们还需要用二进制优化一下,对于每个二分的时间,我们需要预处理出某个城市可以到达哪些避难所,表示成状态。如果在当前 阅读全文
posted @ 2019-05-15 18:19 维和战艇机 阅读(291) 评论(0) 推荐(0)
摘要:题意看这篇博客:https://blog.csdn.net/dreaming__ldx/article/details/88418543 思路看这篇:https://blog.csdn.net/corsica6/article/details/88115948 有个坑点,不能深搜去找具体方案,不然 阅读全文
posted @ 2019-04-08 17:56 维和战艇机 阅读(381) 评论(0) 推荐(0)