
图论
Absoler
这个作者很懒,什么都没留下…
展开
-
上下界网络流 cf704D
cf704D给棋盘上n个棋子染色,红黑两种,代价不同,有m个约束,要求某一行或某一列的红黑棋子数差不能超过某一数值。求最小代价的染色方案。上下界网络流的思路就是分别减去最低流量,剩余的放在图中跑最大流,对于原有大于零下界的边就通过新建超级源点ss和汇点tt解决,即出点多出的连向汇点,入点缺少的从源点补充。合法要求:源点s发出的必须能跑满,否则原有的平衡条件就打破了,无可行流。对于原本就...原创 2020-04-05 18:28:53 · 195 阅读 · 0 评论 -
树上启发式合并(dsu on tree)一篇就会!理解其他博客的基础
这个算法真是研究了好久才明白……众多博客真的不是面向小白的模板拿cf600E举例子,问题是给一棵有根树(rt==1),每个节点有一个颜色值,树的节点数和颜色值的范围都是1e5。对于每个节点我们定义其子树中数量最多的那个颜色值为主颜色(可以有多个并列),现要给出每个节点的主颜色的值的和。首先想到暴力做法,直接去挨个点算他们的子树的答案,统计子树中每种颜色的数量并维护当前主颜色的和。这种算法显...原创 2020-03-29 22:01:20 · 360 阅读 · 1 评论 -
强连通分量分解
知识背景:首先明确强连通分量(strongly connected component)的概念,从任一顶点能够到达任一其他顶点的有向图 的顶点子集,而任意有向图均可以分解成若干不相交的scc。把每个scc视作一个顶点,可得到一个DAG。实现算法:两次dfs,第一次 dfs 遍历将顶点后序(post order)记录下来vs(vector),这里需要注意的是,不管从哪个点dfs,由于是后序记录,...原创 2018-07-24 11:12:36 · 690 阅读 · 0 评论 -
SPFA算法简介
SPFA为Shortest Path Faster Algorithm的缩写,用来解决单源最短路问题,在效率上相比传统算法有一定优势。算法首先需要获取点点距离,不相通的点间距设为inf,准备一个vis数组用来判断点是否在队列中,一个dis数组记录每个点到起点的最短距离。算法核心:不断试图用队列中的点(队首)更新其余点的距离(dis[]),更新成功则,将该点也加入队列(因为被优化成功的点也...原创 2018-10-04 23:22:54 · 822 阅读 · 0 评论 -
最小生成树poj2253
样题:poj2253 题目链接题目大意:一只青蛙需从1号石头经由一系列石头跳跃至2号石头,每块石头相隔一定距离(任意两石头均可跳),求出在所有可能的跳跃路径中,单步跳跃距离最大值最小的一条路径中,该值的大小。向最小生成树算法方向分析,无论是prim还是kruskal算法,均是优先挑选短边或离现有生成树最近的点加入生成树,这种处理顺序就可以保证最后连上二号石头时所加上的边比之前的都要长,且...原创 2018-10-13 22:26:49 · 325 阅读 · 0 评论 -
最小路径覆盖(匈牙利算法)
最小路径算法解决以下问题:对于一个DAG,找到最少的路径,覆盖所有顶点。按路径可否相交分为两类。首先是路径不相交的最小覆盖:我们可以把每个顶点分为出点和入点,这时每种路径安排都是一个二分图P',问题转化为了求该二分图的最大匹配:如果在P'中增加一条匹配边pi'-->pj',那么在图P的路径覆盖中就存在一条由pi连接pj的边,也就是说pi与pj 在一条路径上,于是路径覆盖数就可以减少一...原创 2019-10-06 15:54:36 · 1007 阅读 · 0 评论