生成树
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
D. GCD and MST(MST&双指针)
D. GCD and MST(MST&双指针)按照kruskalkruskalkruskal的思路,先对aia_iai排序。然后贪心将aia_iai左右扩展至最大是最优的,同时维护一个标记数组vis[i]vis[i]vis[i]。表示位置iii向右连有一条边。当w≥pw\ge pw≥p直接breakbreakbreak,因为用ppp此时更优。时间复杂度:O(nlogn+n)O(nlogn+n)O(nlogn+n)// Problem: D. GCD and MST// Contest原创 2021-08-25 18:18:13 · 479 阅读 · 1 评论 -
5632. 检查边长度限制的路径是否存在(排序&并查集)
5632. 检查边长度限制的路径是否存在(排序&并查集)思路:1.离线排序+并查集。将边和询问按权值从小到大排序。加入所有w<limitw<limitw<limit的边每次就findfindfind查找是否连通即可。时间复杂度:O(q+mlogn)O(q+mlogn)O(q+mlogn)const int N=1e5+5;struct edge{ int u,v,d,id; bool operator<(const edge&ed)co原创 2020-12-20 19:14:40 · 304 阅读 · 0 评论 -
Fenced In(Platinum)(贪心&MST)
Fenced In(Platinum)(贪心&MST)给定一个A×BA \times BA×B的牧场,nnn个竖栅栏,mmm个横栅栏把牧场分成(n+1)(m+1)(n+1)(m+1)(n+1)(m+1)个矩形,求使得所有矩形连通的删除最小长度的栅栏之和。思路:显然一个矩形可看成一个点,两相邻矩形之间边就是共边的栅栏,然后就是求这个(n+1)(m+1)(n+1)(m+1)(n+1)(m+1)的点连通的最小权值和,显然是MSTMSTMST问题,但是nm,(n,m≤2.5×104)nm,(n,m\l原创 2020-11-14 18:07:51 · 306 阅读 · 0 评论 -
P4047 [JSOI2010]部落划分(Kruskal)
P4047 [JSOI2010]部落划分(Kruskal)传送门思路:最小生成树,因为每个部落的距离定义为每个部落中距离最近的两个点的距离,所以我们可以建立一个最小生成树,一个点代表第一个部落,因为我们要分成kkk个部落,所以需要删去(n−1)−(k−1)=n−k(n-1)-(k-1)=n-k(n−1)−(k−1)=n−k条边,显然贪心的删去最小的n−kn-kn−k条边是最优的,所以答案就是第n−k+1n-k+1n−k+1条边。#include<bits/stdc++.h>using n原创 2020-06-25 11:36:21 · 366 阅读 · 0 评论 -
I - Swordfish(最小生成树)
I - Swordfish(最小生成树)题意:给定nnn个点的坐标,求最小生成树。思路:因为nnn最大只有100,用kruskalkruskalkruskal或者primprimprim都可以。这里重新温习一下两个算法:kruskal:kruskal:kruskal:对所有边排序,每次取最小边,取n−1n-1n−1条边,同时用并查集维护当前图点的集合,如果不在集合里则加入该边。时间复杂度:O(mlogm) mO(mlogm)\ mO(mlogm) m为边数。prim:prim原创 2020-05-20 22:18:12 · 361 阅读 · 0 评论 -
H - Truck History (最小生成树&Prim)
H - Truck History (最小生成树&Prim)题意:给定n个字符串,任意两字符串直接的距离为相同位置不同 字符的个数。求生成n个字符串所需要最小的权值和。思路:显然是最小生成树问题,只是距离转化一下。n个字符串看成n个结点,任选一个结点进行prim算法即可。AC代码:#include<iostream>#include<cstdio>#in...原创 2020-04-24 18:25:12 · 366 阅读 · 0 评论 -
J - Building a Space Station (最小生成树&kruskal)
J - Building a Space Station (最小生成树&kruskal)思路:将所有两两的点的距离进行排序,然后用kruskal板子就行,唯一需要注意的是距离为负数不用加。AC代码:ps(C++ac,G++wa)#include<cstdio>#include<cstring>#include<iostream>#includ...原创 2020-04-22 15:24:23 · 352 阅读 · 0 评论 -
K - Constructing Roads (最小生成树&prim)
K - Constructing Roads (最小生成树&prim)思路:板子题改了一点,给出所有结点的距离和若干个已经建好的道路(即花费为0),求最小生成树。显然prim解决。AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<queue> #in...原创 2020-04-22 14:55:31 · 338 阅读 · 0 评论 -
G - Borg Maze (Prim&BFS)
G - Borg Maze (Prim&BFS)题意:给一个图,起点S,求遍历到所有‘A’的最小距离之和.每次走到一个‘A’相当于这个’A’是新的起点’S‘,很显然会想到树,新的子结点作为根结点继续往下搜索.所以此题为最小生成树问题。具体看代码。AC代码:#include<cstdio>#include<cstring>#include<iostre...原创 2020-04-21 12:07:03 · 338 阅读 · 0 评论 -
F - Agri-Net (最小生成树&kruskal)
F - Agri-Net (最小生成树&kruskal)思路:板子题。(第一次学这个算法标记一下)。思路就是对边排序,取n-1条边生成一棵权值和最小的树。生成树的过程用并查集实现。AC代码:#include<cstdio>#include<cstring>#include<iostream>#include<queue> #in...原创 2020-04-21 10:42:11 · 418 阅读 · 0 评论