随笔分类 - 最小生成树
摘要:传送门 经典的最小生成树模型 建一个点 0 ,向所有其他点 x 连一条边权为 c[x] 的边,其他任意两点之间连边,边权为 (ki+kj)(|xi−xj|+|yi−yj|) 然后用 prim 求个最小生成树即可,
阅读全文
摘要:传送门 考虑先不管限制跑一遍 Kruscal 如果白色边少了,说明白边相对权值比较大 如果白色边多了,说明白边相对权值比较小 发现如果给白边适当改变一点权值,就可以使得白边选择的数量改变 考虑二分一个偏移量 mid 每次给所有白边加上 mid 后跑一遍 Kruscal 看看白边是多了
阅读全文
摘要:传送门 如果一条边只要考虑 a 的限制,那么显然最小生成树 但是现在有 a,b 两个限制,所以考虑按 a 从小到大枚举边,动态维护 b 的最小生成树 考虑新加入的一条边 x,y ,如果 x,y 不在一颗树上显然直接加入,如果在一棵树上,考虑原本树上 x 到 y 的路径
阅读全文
摘要:传送门 考虑前缀异或和 b[i] 如果知道每个 b[i] 就相当于知道所有数 初始知道 b[0],每次操作 l,r 就是求出 b[l−1] xor b[r] 考虑转化成图论模型,把 b[i] 看成点(包括 b[0]),每次操作相当于把两个点 b[l−1],b[r]
阅读全文
摘要:传送门 如果没有挖井只是联通所有点就是最小生成树 但是有挖井,我们需要转换一下 把挖井操作看成 0 号点连一条边过去 然后还是最小生成树.. 因为是稠密图,所以用 prim 算法来求最小生成树
阅读全文
摘要:传送门 正解矩阵树 不会 显然最小生成树每个长度的边的数量是不变的 而且题目说:具有相同权值的边不会超过10条。 暴力 dfs 枚举所有相同长度的边,看看有多少种方案 然后就过了 代码:
阅读全文
摘要:传送门 算法:最大生成树 & LCA 题目要求两点之间最小边权 的最大值.. 就是两点之间有多条路径,每条路径有一个 最小边权 要找到最大的 最小边权 考虑kruskal算法的过程 如果我们每次把能使图两个块联通的最大的边加入图中 那么最终出来的图就称为最大生成树 显然 在最大生成树中,两点之间的路
阅读全文