一通乱学【树问题相关】
作者:互联网
只要我什么都不会,一道题就可以快乐学习一下午(
货车运输 蓝题
题目描述
A 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\),城市之间有 \(m\) 条双向道路。每一条道路对车辆都有重量限制,简称限重。
现在有 \(q\) 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。
佬们的题解
最大生成树+LCA
首先我不会\(LCA\),润去看了\(LCA\),P3379 最近公共祖先(题目),然后发现\(LCA\)是个壮汉,算法标签点进去,一堆紫题真吓人。只看了倍增,明天慢慢研究其它算法。
知识点:倍增法LCA
最后,这道题的大佬题解:佬的题解
Kruskal重构树+LCA
知识点:重构树
感觉就是微改了\(Kruskal\),算法逻辑像一开始没看并查集题解时,我自己写的并查集hhh。Kruskal重构树—学习笔记,主要摘抄在下面了,感觉没什么必要点进去链接。
关键摘要:
基于\(Kruscal\)框架(将边排序)
依次遍历每条边,若该边连接的两个节点\(u\)和\(v\) 不在一个并查集内,就新建一个结点\(node\),该点点权为这条边的边权
找到\(u,v\)所在并查集的根$u_i,v_i \(,连边\)( n o d e , u_ i ) ( n o d e , v_ i ) $
更新并查集$f a [ u_i ] = n o d e , f a [ v _i ] = n o d e $
遍历完原图所有边后,我们建出来的必定是一棵树,也就是我们要的kruskal重构树
注意这棵树是以最后新建的结点为根的有根树,若原图不连通,即建出的是一个森林,那么就遍历每个节点,找到其并查集的根作为其所在树的根
最后,这道题的大佬题解:佬的题解
树链剖分+线段树
首先我不会线段树,润去看了线段树:猫猫讲线段树(视频),用的不是c,不过问题不大。
然后我不会树链剖分,润去看了树链剖分:树链剖分(视频)。
逻辑都不难,但是感觉很容易写错喔。明日默写一下。
最后,这道题的大佬题解:佬的题解
启发式合并
说是不用\(LCA\),感觉很神奇,待看...
标签:乱学,剖分,题解,线段,查集,树链,LCA,一通,相关 来源: https://www.cnblogs.com/shanzr/p/16484695.html