
最小生成树
文章平均质量分 77
最小生成树
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【NOI2018】归程(kruskal重构树)
这道题最后会化为这么一个问题:给一张图,每条边都有边权,多组询问,每次给出 u,ku,ku,k,问从 uuu 开始走,只走边权 ≤k\leq k≤k 的边,请维护 uuu 能走到的点的集合。这就需要用到一种叫 kruskal 重构树的东东。首先可以发现,若 uuu 能走到 vvv,那么 uuu 在最小生成树上也必然能走到 vvv,所以我们只需要在原图的最小生成树上面走即可。我们考虑用 kruskal 算法构建最小生成树时的过程:假设当前枚举到的边的两个端点所在连通块不同(设这两个连通块的根分别是 a,原创 2021-09-17 15:52:57 · 192 阅读 · 0 评论 -
【CF1253F】Cheap Robot(最小生成树,最短路)
首先发现所有询问点都是充电桩这个条件很有用。它能滋生出一种暴力到极端的想法:用 Floyd 对全局跑一遍最短路。然后新建一个图,图中两两充电桩连一条边,边权为它们之间的最短路,代表着从这个充电桩直接走到那个充电桩最少要备多少电。然后再把新图的最小生成树建出来,询问时直接询问树上两点路径边权最大值。发现时间压根过不去,也不太好直接优化。发现瓶颈主要是在跑 Floyd O(n3)O(n^3)O(n3) 和建图 O(k2)O(k^2)O(k2),这是我们我们远远不能接受的。但是原图最多也就 mmm 条边,原创 2021-01-25 19:56:46 · 215 阅读 · 0 评论 -
【CF1120D】Power Tree(建图,差分,最小生成树)
题面题意有点难懂。主要是洛谷给的翻译太zz了。大概的意思是:给定一棵 nnn 个点的有根树,111 为根,每一个点有一个代价 cic_ici。然后有两个人 Alice 和 Bob 在玩游戏。在第一阶段,Alice 会购买树上的一些点,购买一个点的代价是 cic_ici。在第二阶段,Bob 将给树的所有叶子节点设置一个点权。在第三阶段,Alice 可以选择他在第一阶段购买的一些点。对于他选择的每一个点 uuu,他可以让 uuu 子树内的所有叶子节点的点权加上他任意指定的一个整数 xxx。原创 2021-01-24 22:22:22 · 673 阅读 · 0 评论 -
【CF888G】Xor-MST(01Trie,最小生成树)
看到异或最值要么是线性基要么是 01Trie。线性基显然可以排除。那么先把所有的 aia_iai 插入 01Trie 内。然后发现对于任意两个数 aia_iai 和 aja_jaj:你发现它们在 rt∼lcart \sim lcart∼lca 路径上异或出来都是 000。不妨定义两个结束节点的 “分离节点” 为它们的 lcalcalca,那么 aixoraja_i \operatorname{xor} a_jaixoraj 的前 deplcadep_{lca}deplca 位都是原创 2021-01-22 15:33:32 · 210 阅读 · 0 评论 -
【EA的练习赛2】【洛谷P7274】草地(单调栈,LCT维护最小生成树)
学到了很多。我们分步走。首先在做这道题前先观察到几个小性质:操作顺序不同不影响结果发现对于每一个黑点,一通操作过后它扩展出的区域是一个矩形,而操作顺序是不影响这个矩形的大小和位置的。最后的要求 “任意两个黑色格子八连通” 等价于 “一开始图中的黑色格子八连通”。这是显然的,因为对于一个黑点,它扩展出来的格子是个矩形,肯定八连通,所以我们只需要求一开始图中给定的黑点在最后八连通就好了。那么对于两个黑点,操作它们同时往左扩展一格,可以看作是让这两个黑点的水平距离减 111。不妨把八连通分原创 2021-01-21 20:34:49 · 290 阅读 · 0 评论 -
【XSY3810】公路建设(线段树,kruskal)
题面题解一开始竟然没反应过来是最小生成树。考虑用线段树直接维护每个区间的答案。注意到一个区间最多只有 n−1n-1n−1 条树边有用,所以线段树每个节点用一个 vector按权值从小到大保存区间内用到的树边即可。合并两个区间的信息时,只需要将两棵子树存的树边归并排序,然后做 Kruskal 算法。时间复杂度 O((m+qlogm)nα(n))O\big((m+q\log m)n\alpha(n)\big)O((m+qlogm)nα(n))。#include<bits/stdc++.h原创 2021-01-09 21:00:49 · 141 阅读 · 0 评论 -
【SHOI2010】最小生成树(最小割,最小生成树)
初看题目,发现题目的操作比较复杂。仔细想了一想,发现题目中的操作“把图中除了这条边以外的边,每一条的权值都减少 111”就等价于“把这条边的权值加 111”。所以题目的操作就被我们化繁为简了。然后继续想:如何才能使 LabLabLab 边一定在最小生成树中?画个图看一下(就以样例为例):假设现在 LabLabLab 边是 (1,2)(1,2)(1,2),长度为 222。那么既然我要保证 LabLabLab 边是最小生成树的一条边,点 111、222 就不能在一个环里面,也就是说,点 111、222原创 2020-07-20 14:32:56 · 446 阅读 · 0 评论 -
【XSY2515】管道(pipe)(最小生成树+倍增lca)
题面Description给你一个城市下水道网络图,你需要选出一些管道,使得在只使用这些管道的情况下,令整个网络联通,并且花费最小。网络图可以看做是无向连通图,有nnn个节点和mmm条边,每条边连接uiu_iui和viv_ivi,选择的花费是wiw_iwi。不巧的是,由于某些原因,现在市政局要求选定某条特定的边管道,你的任务是求出对于某一条边,在选择这条管道的前提下的最小花费。In...原创 2019-08-22 15:35:24 · 313 阅读 · 0 评论