$Luogu$ $Sol$ 首先当然是构建一棵最大生成树,然后对于一辆货车的起点和终点倍增跑$lca$更新答案就好.记得预处理倍增的时候不仅要处理走了$2^i$步后是那个点,还有这中间经过的路径权值的最小值以便之后统计答案. 再一看发现这题并没说给的图是联通的,也就是说跑了最大生成树之后可能有若干棵 ...
分类:
其他好文 时间:
2019-10-03 16:24:18
阅读次数:
75
题面 首先便是想到了Floyd的暴力方法,状态转移方程也不难推出:w[i][j]=max(w[i][j], min(w[i][k],w[k][j]));但是n^3n3次方时间复杂度和n^2n2的空间复杂度是显然不可取的。 于是我们思考,可以发现有一些权值较小的边是不会被走过的。正如样例中的第三条边, ...
分类:
其他好文 时间:
2019-09-22 15:20:31
阅读次数:
56
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <cmath> 5 using namespace std; 6 struct edg 7 { 8 int x,y,w; 9 friend bool ... ...
分类:
其他好文 时间:
2019-09-14 19:22:37
阅读次数:
76
1.求类似最小距离最大值/最大距离最小值问题,通过最小/大生成树固定一个条件,另一个条件在树里找到。 例题:货车运输。 求两点间的一条路径,使得最小边权最大。先通过最大生成树确定最大,再从两点间的边里选择最小的边权,用到了lca。 例题:Star Way to Heaven 求路径到一些星星的最小距 ...
分类:
其他好文 时间:
2019-08-17 21:51:06
阅读次数:
155
P1967 货车运输最大生成树+倍增算路径最小值 最大生成树就是kruskal时将边改为降序 然后就和普通kruskal一样 然后就是用的LCA倍增模板中说的其它骚操作一样 可以在预处理的时候还可以顺便记录下这段路径的权值最大值 最小值或者权值和之类的信息,这样就可以在O(logn)的时间内求出树上 ...
分类:
其他好文 时间:
2019-06-01 19:22:27
阅读次数:
86
"洛咕" 题意:A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物? 分析:显然限重就是边权.构建出图的最大生成树,然后树上每个节点dfs预处理出f[v][0]和dis ...
分类:
其他好文 时间:
2019-03-16 16:46:03
阅读次数:
192
"[LCT]P4172水管局长" $Solution$ 如果没有删除,那么就是维护一个最小生成树,然后倍增求两点之间的最大边权(货车运输). 因为有删边操作,想到 ,但这是删除,最大值 不满足减法 ,所以不好搞。 但注意到 只有删除没有添加 ,所以我们可以 倒过来处理 ,一条一条边 维护最小生成树以 ...
分类:
其他好文 时间:
2019-03-01 19:54:52
阅读次数:
259
问题 C: 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 输入 输入第一行有两个用一个空格隔开的整数 n,m,表示 A ...
分类:
其他好文 时间:
2019-02-18 16:02:01
阅读次数:
156
P1967 货车运输 思路: 将边权从大到小排序,然后建立最大生成树,在新图上求两个点的lca即可 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #include <cm ...
分类:
其他好文 时间:
2019-02-14 22:24:51
阅读次数:
256
qwq 这题是知道了正解做法才写的.. 求每两点间最小权值最大的路径,本来我以为要每个点都跑一遍dij(?),后来意识到生成树好像是用来找这个的( ´▽`) 然后我问dtxdalao对不对,他说“我记得这道题好像要用倍增”(我:???剧透会被关进小黑屋的) 其实就是最大生成树是随便建的,然后对于每两 ...
分类:
其他好文 时间:
2019-02-07 09:31:45
阅读次数:
200