图论
文章平均质量分 79
Power_True
这个作者很懒,什么都没留下…
展开
-
【题解&比赛总结】gmoj6683 我图呢
题目大意给你一个二分图,并告诉每个点的点权要求二分图的最大独立集并使得权值最大,同时输出任意一组方案。题解是一道经典的二元关系最小割的问题。我们要求二分图最大独立集,那么我们就可以考虑求最大匹配,即最大独立集=点数-最大匹配,具体证明为:二分图的独立数等于顶点数减去最大匹配数,很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M|,同时必然可以从每条匹配边的两端取一个点加入独立集并且保持其独立集性质。——百度百科为了方便计算答案,我们可以考虑求最小点覆盖原创 2021-07-14 21:21:47 · 144 阅读 · 5 评论 -
树:倍增求LCA(最近公共祖先)
嘿,LCA的题目可是我最喜欢的题目了,今天我就来讲讲如何求LCA?对于如何LCA,我只会几种,不过比较实用。我重点去讲倍增求LCA。倍增求LCA倍增?什么是倍增?字面上的意思便是成倍增长,其实也就是ST表(不懂的上网搜一搜 )言归正传,那我们该怎么用倍增求LCA呢?首先,我们设 fi,jf_{i,j}fi,j 表示从 iii 这个点向上跳 2j2^j2j 步所到达的点。然后我们可以一遍dfs,处理出所有的 fi,0f_{i,0}fi,0 即每个点的父亲。接着我们考虑如何转移:首先我们先原创 2020-08-09 11:25:32 · 244 阅读 · 0 评论 -
树:树的直径
很久没写blog了,今天水一篇。今天来讲讲树的直径树的直径什么?你不知道什么是树?点此处什么是树的直径呢?树的直径就是树中两个节点最远的距离。那该如何求呢?其实也很简单。方法一:树形dp我们可以运用树形dp,设 gxg_xgx 表示从节点x出发走向以x为根的自述,能够到达最远节点的距离,若 edge(x,y)edge(x,y)edge(x,y) 表示边权,y表示x的子节点,则有:gx=max(gy+edge(x,y))g_x=max(g_y+edge(x,y))gx=max(gy+原创 2020-08-01 19:01:31 · 641 阅读 · 0 评论