Kruskal重构树 +倍增LCA 10pts求调,玄关

P1967 [NOIP2013 提高组] 货车运输

你这有大问题啊,两点之间最小值怎么就是d[LCA(u, v)]了 @[Stevehim](/user/759274)
by yyrwlj @ 2023-11-23 11:08:37


@[yyrwlj](/user/965685) 啊这不是Kruskal重构树的性质吗,d是点权。
by Stevehim @ 2023-11-23 11:10:30


不不不,你考虑在dfs里面维护一个g[i][j]表示i节点到它的 $2^i$ 级祖先的最小值,然后查询时就是查询LCA的过程中,往上跳的时候,ans就更新一次 @[Stevehim](/user/759274)
by yyrwlj @ 2023-11-23 11:16:39


@[yyrwlj](/user/965685) 但你考虑我这个不是最大生成树 + LCA的写法a.... 克鲁斯卡尔重构树不是点权代表某两个点的边权吗?
by Stevehim @ 2023-11-23 11:18:31


@[Stevehim](/user/759274) (指新加的点)
by Stevehim @ 2023-11-23 11:19:11


你前面没错,就是你要是用d来查询的话就有问题@[Stevehim](/user/759274)
by yyrwlj @ 2023-11-23 11:22:00


@[yyrwlj](/user/965685) 但为什么有问题啊!!!!QAQAQAQ
by Stevehim @ 2023-11-23 11:25:13


你的d本身就没对应到点上,而且你不能保证LCA就肯定是两点之间最小值@[Stevehim](/user/759274)
by yyrwlj @ 2023-11-23 11:29:06


@[yyrwlj](/user/965685) [看这个](https://www.luogu.com.cn/blog/niiick/solution--p1967)
by Stevehim @ 2023-11-23 11:30:42


@[yyrwlj](/user/965685) 而且我 d 是按照 tot 来的,tot 从 n + 1 开始,然后对应当前两个不是一个集合的点之间的边权。
by Stevehim @ 2023-11-23 11:31:39


| 下一页