- 博客(13)
- 收藏
- 关注
原创 HDU 5652 India and China Origins(并查集)
题意:中国和印度之间有一片地方,把这片地方抽象化,于是就可以看成一个N * M矩阵,其中黑色的代表高山不能走过去,白色的代表平原,可以通行,人每次可以选择往上下左右四个方向移动,但是随着时间的变化某些白色的平原会变成黑色的高山,从而变为不可通行,题目中给出一个代表地势的图,然后有 Q 次操作,第 i 次操作 代表在第 i 年 (x, y)处的平原变成了高山,即白色变为了黑色。问中国
2016-04-04 10:01:00 551
原创 UVA 10600 ACM Contest and Blackout(最小生成树)
题意: 给你点和边,求出最小生成树 和 次小生成树。思路: 先求一次最小生成树,然后标记每一条边,依次删除,再求最小生成树,从中找到最小的就是次小生成树了。代码: import java.util.Scanner;import java.util.Comparator;import jav
2016-04-03 13:01:44 557
原创 UVA 10369 - Arctic NetWork (求最小生成树)
题意: 在南极有 N 个科研站,要把这些站用卫星和无线电连接起来,是的任意两个之间都能互相通信,如果其中任意的一个地方安装了卫星,那么就可以和其他安装卫星的互相通信,和距离没有关系,但是安装无线电 是需要费用D的,这个费用 D 为在安装无线电的地方中使用的无线电通信花费最大的那个值。现在有S个卫星可以提供给你安装,还有足够多的无线电设备,让你设计一个方案,使得D的费
2016-04-03 12:50:26 433
原创 UVA Live 6437 Power Plant 最小生成树
题意:有许多油井和村庄什么的,让你使得这些村庄能连通一个油井就好了。第一行给你一个数字T代表有T组测试数据,第二行有 M , N , K ,M代表包括油井在内的村庄数,N 代表有N个 两两连通的地方。K代表有K个油井。接下来有N行,每行三个数 u , v, w, 代表 u 号和 v 是连通的 权值为 w。思路:以往做的题目都是只有一个源点,这道题油井的数目就是源点,所以源点不唯一。但是不要想复
2016-04-03 11:31:02 436
原创 UVA 1151 Buy or Build MST
题意:在平面上有n个点,要让所有n个点都连通,所以你要构造一些边来连通他们,连通的费用等于两个端点的欧几里得距离的平方。另外还有q个套餐,可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连通,第i个套餐的花费为ci。求最小花费。解决:在这里我们可以采取枚举所有可能 + K算法来得出答案,比如这里有三个套餐,我们利用二进制枚举001 010 011 100 101 110 11
2016-04-03 10:22:56 467
原创 UVA 1395 Slim Span 最小生成树
题意:给你一个图,让你求这个图中所有生成树中满足题目条件的,这个条件是生成树中最长边与最短边的差值最小。思路:根据最小瓶颈生成树的定义:在一个有权值的无向图中,求一个生成树最大边的权值尽量小。那么我可以从小到大枚举每一条边作为我所求生成树的最短边(即第一次以最短边求最小生成树,第二次删除第一条边,以第二条边为最短边求最小生成树,第三次删除第一条边和第二条边,以第三边为最短边求最小生成树。)然后
2016-04-02 20:56:21 869
原创 POJ 1679 The Unique MST 次小生成树
题意:判断最小生成树是不是唯一,我的判断方法是求次小生成树,如果相等那么说明不唯一。/* POJ 1679:判断最小生成树是否唯一 思路:先求出最小生生成树 MST,再求出次小生成树SST,判断是否相等。 求SST:先求最小生成树,标记构成最小生成树的每一条边,然后依次删除,再次求最小生成树,取这里面的最小的即是次小生成树 算法实现:kruskal 错误:删除一条属于MST的边
2016-04-02 20:30:12 364
原创 POJ 1789 Truck History
题意:题意比交难理解,直接描述了,说这里有一些字符串,一个字符串必须由另外一字符串 “衍生” 出来,衍生的价值是 这两个字符串之间的 distance 距离,即俩个字符串的相同位置总共有几个字符不一样。比如 aaaaaaa 和 baaaaaa的 distance 距离为 1;跟你 N 个字符串,让你给出一个衍生方案,是的最后的衍生价值最小。思路:这道题可以转化为求最小生成树的一道题,每个
2016-04-02 18:52:28 303
原创 POJ 1258 Agri-Net 最小生成树
题意:给出一个N。接下来有一个N * N的邻接矩阵A,第 i 行 第 j 列代表点 i 和 j 相距A[i][j].求连同所有点的最短路径,求最小生成树即可。思路:用P算法,直接用邻接矩阵来存放数据就好了。import java.util.Scanner;public class Main { final static int MAXN = 100 + 3; final
2016-04-02 17:34:18 283
原创 POJ 1251 Jungle Roads
题意:第一行给一个N,代表这里有N- 1 个村庄,接下来有 N- 1 行,每行开头输入一个大写字母 C 代表第 i 个村庄的编号,随后有一个数字 m 代表 C 这个村庄和 m 个村庄相连,随后再给出 m 组数据,每组输入由一个大写字母 F 和 数字 w 组成,代表 C 和 F 之间的距离为 W;当N== 0时程序结束。思路:因为题目中给出的字母为 A - Z 那么我这里用数字 1 - 26代
2016-04-02 17:27:41 370
原创 HDU 1879 继续畅通工程 最小生成树
思路:比较典型的求最小生成树,利用K算法或者P算法,如果在输入时两个村庄的修建状态为 已修建,那么我这里的做法是让他们之间的权值为 0,即修建费用为 0;然后套用算法就好了。代码P算法:#include #include #include #include #include #include #include #include #include #include #
2016-04-02 17:15:21 328
原创 HDU 1875 畅通工程再续 最小生成树
思路:题目给的是每个小岛的坐标,俩个岛之间的距离等于俩个岛之间的欧几里得距离,然后套用P算法或者K算法就好了。用K算法或者P算法都可以,但是这道题显然需要计算出来每俩个岛之间的距离,这样就有接近V^2/2条边,输入稠密图,所以用P算法会更好点。注意的是题目中说两个岛之间的距离不能大于1000米也不能小于10米,如果用P算法那么如果俩个岛之间的距离不符合条件就把这个到之间的距离设置为无穷大,如果用的
2016-04-02 10:49:16 384
原创 HDU 1863 畅通工程 最小生成树
思路:比较典型的最小生成树的题目了、、在这里用求最小生成树的经典算法K(Kruskal)算法和P(Prim)算法。我的 K 算法用的是结构体来存图,P 算法用的是邻接矩阵来存图,K算法的复杂度是O(ElogE),比较适用于稀疏图,P算法的复杂的是O(V ^ 2),适合用稠密图。以下是C++的K算法代码#include #include #include #include #
2016-04-02 10:30:44 358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人