随笔分类 -  图论

摘要:1.最小生成树: kruscal: 2.最短路: spfa(最好不要写,他死了)... dijisktra(这个比较好) 3.LCA 倍增版本: 树剖版本: 4.tarjan 有向图tarjan缩点+spfa最长路 无向图割边: 无向图割点: 5.网络流 最大流: 费用流: 有源汇上下界最大流 有源 阅读全文
posted @ 2019-07-12 15:56 lleozhang 阅读(472) 评论(0) 推荐(0) 编辑
摘要:很好的一道题,对理解最小割有很大帮助 首先,不难发现本题与网络流24题中的某一道很类似,我们可以先跑一次dp求出每个节点的LIS,然后拆点,拆出的两点之间连流量为删除的代价的边,剩下的点之间按dp的转移连流量正无穷的边,最后跑最小割即为第一问答案 但是第二问有个问题:又引入了一个量要求最小割字典序最 阅读全文
posted @ 2019-07-11 15:09 lleozhang 阅读(216) 评论(0) 推荐(0) 编辑
摘要:这题并不是太难 首先题目我们将每个城市拆点,由源点向一端连容量为初始人数的边,由另一端向汇点连容量为最后人数的边,然后按照题目要求从一端向另一端连容量无穷大的边 这样跑出最大流之后我们只需比较这个流量与总人数是否相等就知道是否合法了 至于输出方案,一个点向另一个点的所有流量都会体现在反向边上,因此我 阅读全文
posted @ 2019-07-11 11:29 lleozhang 阅读(298) 评论(0) 推荐(0) 编辑
摘要:费用流好题 本题的建图很有意思 正常我们看到棋盘问题应该先对整个棋盘黑白染色构成一个二分图,然后再考虑建图的问题 但是本题题目中已经明确区分了不同的斜线,问题在于怎么保证一个"L"形 因此我们进一步分析:显然柱子应该放在有代价的位置,我们应该由这样的位置向上下左右连边,保证有两个就行 但是这样建图是 阅读全文
posted @ 2019-07-11 10:51 lleozhang 阅读(206) 评论(0) 推荐(0) 编辑
摘要:首先题意就是裸的最小割啦 然后考虑如何统计边数 这里有一个trick: 我们设定一个大于m的阈值,对于每条边的边权我们乘这个阈值+1后跑最小割,得到的答案除以阈值就是真正的最小割,取模阈值后就是最少割掉的边数 为什么? 我们考虑:设原来的最小割割掉的边权为$v_{1},v_{2}...v_{n} 阅读全文
posted @ 2019-07-11 09:03 lleozhang 阅读(146) 评论(0) 推荐(0) 编辑
摘要:思想基本同bzoj 2594,但是多了一步 首先我们发现这时的边有两个属性了,因此我们考虑先去掉其中一者的限制 我们把所有边按a大小排序,然后从小到大加入维护的最小生成树 每次加边时都按照b的大小操作bzoj 2594,然后更新答案即可 如果始终不联通输出-1 阅读全文
posted @ 2019-07-10 16:15 lleozhang 阅读(223) 评论(0) 推荐(0) 编辑
摘要:很好的一道LCT题目 首先我们可以发现,题目要求的就是最小生成树上的一条树链的最长边的长度,因此我们实际只需动态维护最小生成树即可 然后我们考虑怎么动态维护最小生成树 不难发现,如果涉及在最小生成树上删边,那么这个操作将变得非常复杂,因为我们并不知道删边之后要把什么样的边补充回去才行 但是,如果我们 阅读全文
posted @ 2019-07-10 16:12 lleozhang 阅读(166) 评论(0) 推荐(0) 编辑
摘要:不想写题解...这题就是在跑最短路的时候记录下每个点最短路树上可能的父亲,然后把每个点的父亲数量乘起来就行了 代码: 阅读全文
posted @ 2019-07-04 15:02 lleozhang 阅读(123) 评论(0) 推荐(0) 编辑
摘要:线段树优化建图板子题 首先暴力建图显然是不可取的,但是我们发现建图要求是点和区间之间的问题,所以考虑用线段树优化 但是怎么优化呢? 如果用一棵线段树很难处理同时出边和入边,因此我们考虑用两棵线段树(类似拆点),一棵线段树作为起点,另一棵线段树作为终点,然后在两棵线段树之间连边即可 这样的话连边的方式 阅读全文
posted @ 2019-07-04 11:01 lleozhang 阅读(454) 评论(0) 推荐(0) 编辑
摘要:多有趣的一道题啊... 考场上的思路: 首先我们可以通过hash判断出每个B类串是几个A类串的前缀,从这个B类串向对应的A类串连边 然后我们直接按支配关系从A类串向B类串连边,相当于以B类串为中转构造了一张A类串的图,在这张图上跑一次最长路即可 这样做是40分(所以4 阅读全文
posted @ 2019-07-04 09:04 lleozhang 阅读(161) 评论(0) 推荐(0) 编辑
摘要:题目描述:这里 从这里开始,我们涉及到了一个新的问题:最小割问题 首先给出一些定义(本人根据定义自己口胡的): 一个流网络中的一个割是一个边集,使得割掉这些边集后源点与汇点不连通 而最小割问题就是一个使得边集中各边容量之和最小的割 根据ford-fulkerson定理,最小割等于最大流! 基于上面的 阅读全文
posted @ 2019-04-26 15:16 lleozhang 阅读(198) 评论(0) 推荐(0) 编辑
摘要:题目描述:这里 极其裸的一道费用流问题 首先分析第一问,由于要求一个点只能经过一次,所以我们将梯形中的每一个点拆成两个点(记为入点和出点,顾名思义,入点用来承接上一行向这一行的边,出点用来向下一行连边) 然后将出入点之间的流量设为1,边权设为0,这样就有效保证了一个点只经过一次 接下来,我们从上一行 阅读全文
posted @ 2019-04-26 10:16 lleozhang 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目描述:这里 这道题是网络流问题中第一个难点,也是一个很重要的问题 如果直接建图感觉无从下手,因为如果不知道放几个球我就无法得知该如何建图(这是很显然的,比如我知道 1+48=49=72 ,可是我都不知道是否能放到第48个球,那我怎么知道如何建边呢?) 所以这时就体现出了一个很重要的想法:枚 阅读全文
posted @ 2019-04-25 14:17 lleozhang 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题目描述看:这里 这是我们遇到的第一个要求输出方案的问题 考虑建图然后用最大流思想: 首先由源点向每一道试题连边,容量为1 然后由每一种试题类型向汇点连边,容量为需求量 最后由每一道试题向可能属于的试题类型连边,容量为1 然后跑最大流,如果流量等于总需求量的话即证明合法(每一条到汇点的边流量都跑满才 阅读全文
posted @ 2019-04-25 13:54 lleozhang 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题目描述:这里 题面已经提示我们这是费用流了 那么由源点向所有仓库连边,容量为仓库原有货物量,费用为0 然后由所有零售商店向汇点连边,容量为一个零售商店的需求量,费用为0 最后由仓库向零售商店连边,容量正无穷(由于源点和汇点的限制,所以不会出现不合法情况),费用为题给费用 然后跑费用流就得到了最小费 阅读全文
posted @ 2019-04-24 16:30 lleozhang 阅读(173) 评论(1) 推荐(0) 编辑
摘要:题目链接:这里 本题是一个典型的费用流问题,可以作为费用流建图模板使用 首先看到,每个人只能做一件工作,每件工作只能做一次,一个人做某件工作有一定的收益 那么我们建立一个超级源点st和超级终点ed,然后由源点向所有人连边,容量为1,费用为0 接着由工作向汇点连边,容量为1费用为0 上面满足了每个人只 阅读全文
posted @ 2019-04-24 16:20 lleozhang 阅读(150) 评论(0) 推荐(0) 编辑
摘要:看了好多篇题解才看懂的题,我实在太菜了... 首先根据一个我不知道的算法,可以证明在没有加入新的边的时候,原图的所有生成树的方案数就是所有点(除1以外)的度之积 那么在新加入这条边之后,我们仍然可以这样计算,但是会产生一种问题:就是会出现环! 所以我们需要利用一些容斥,把不合法的情况去掉 接下来我们 阅读全文
posted @ 2018-11-06 09:41 lleozhang 阅读(152) 评论(0) 推荐(0) 编辑
摘要:非常好的一道题,可以说是树形dp的一道基础题 首先不难发现,:如果我们把有关系的两个点用有向边相连,那么就会形成一个接近树的结构。如果这是一棵完美的树,我们就可以直接在树上打背包了 但是这并不是一棵完美的树,甚至并不是一棵树,因为: 首先,由于题中有n个点,还有n条边,所以有很大的几率出现环! 而且 阅读全文
posted @ 2018-11-06 07:25 lleozhang 阅读(111) 评论(0) 推荐(0) 编辑
摘要:这题不错... 首先,不难看到他想让你求出的是最短路树 然后,考虑到所有边权均为1,所以可以采用bfs直接生成最短路树 至于方案的储存,可以在加边的时候同时记录边的编号,然后对每个点维护一个能转移他的最短路的边的编号的集合,这样总的方案数就是所有的集合大小的乘积 然后用dfs在每个集合中选一个元素输 阅读全文
posted @ 2018-10-23 20:51 lleozhang 阅读(260) 评论(0) 推荐(0) 编辑
摘要:题意:给定一张n个点,m条边的无向联通图,其中m-n<=20,共q次询问,每次询问求给定两点u,v间的最短路长度 第一眼看见这题的时候,以为有什么神奇的全图最短路算法,满心欢喜的去翻了题解,发现就四个字“树上套环”! 其实这题的提示很明显:m-n<=20! 这说明,如果我们对这个图做一次生成树,那么 阅读全文
posted @ 2018-10-16 16:48 lleozhang 阅读(170) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示