![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_生成树
文章平均质量分 73
TK13
你在凝视深渊的时候 深渊也在凝视着你
展开
-
hdu2489-DFS+最小生成树
题意: 给你n个点,和任意两点的距离,让你在这N个点中找到一个有m个点并且ratio最小的树. ratio = sum(edge) / sum(node)思路: N #include#include#include#define N 20#define inf 100000000;using原创 2014-03-04 16:15:58 · 1136 阅读 · 0 评论 -
POJ1789简单小生成树
题意: 给你一些车牌号,然后另一两个车牌号之间的权值就是这两个字符串之间相同位置不同字母的个数,然后求最小生成树。思路: 裸题,不解释了。#include#includeusing namespace std;typedef struct{ int a ,b ,c;}EDGE;EDGE e原创 2015-02-06 16:46:15 · 429 阅读 · 0 评论 -
POJ1258最小生成树简单题
题意: 给你个图,让你求一颗最小生成树。思路: 裸题,克鲁斯卡尔或者普利姆都行。#include#includeusing namespace std;typedef struct{ int a ,b ,c;}NODE;NODE node[100*100+10];int mer[105];原创 2015-02-06 16:39:18 · 1533 阅读 · 0 评论 -
POJ1679判断最小生成树的唯一性
题意: 判断最小树是否唯一。思路: 我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生成树,就这样一直跑最小生成树,如果找到了一颗和之前的那个一样的,那么就是不唯一,第二种方法也是先最小树,然后枚举,在枚举的时候不是继续重新跑,而是断开当前边,把树分成两个集合,然后在枚举这连个集原创 2014-12-07 14:00:52 · 566 阅读 · 0 评论 -
Poj 3522 最长边与最短边差值最小的生成树
题意: 让你求一颗生成树,使得最长边和最短边长度差值最小。思路: 额!!!感觉这个思路会超时,但是ac了,暂时没什么别的好思路,那么就先说下这个思路,大牛要是有好的思路希望能在下面留言,相互学习,我的方法是先把所有的边都按长度排序,然后枚举没一颗生成树,这样枚举能得到正确答案的原因是,如果是求最小的差值,那么最终的答案一定是在sort之后的连续的以段,我们只要枚举每一原创 2014-09-26 20:29:21 · 975 阅读 · 0 评论 -
POJ 1679 判断最小树是否唯一
题意: 判断最小树是否唯一。思路: 我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生成树,就这样一直跑最小生成树,如果找到了一颗和之前的那个一样的,那么就是不唯一,第二种方法也是先最小树,然后枚举,在枚举的时候不是继续重新跑,而是断开当前边,把树分成两个集合,然后在枚举这连原创 2014-09-24 21:00:21 · 475 阅读 · 0 评论 -
hdu4966 最小树形图(最少辅导花费)
题意: 以一些科目,和辅导班,每个科目最终要求修到某个等级,可以花一定的钱在辅导班把某一科目修到某一等级,进入辅导班的时候会有一个限制,那就是达到他给出的科目和等级限制,比如a b c d m的意思就是科目a必须达到b等级才可以花m钱把科目c修到d等级,最后问把所有科目修到给定的等级要花的最小辅导费用。思路: 我们可以把每一个科目的每一个等级看成一个原创 2014-08-21 16:49:07 · 666 阅读 · 0 评论 -
POJ 1679 判断最小树是否唯一
题意: 给你一个图,问你最小树是否唯一,唯一则输出最小数的权值,不唯一输出Not Unique!思路: 题目问的是最小树是否唯一,其实也就是在问次小树是否等于最小树,如果等于则不唯一,求次小树快的方法应该是先求最小树,然后枚举删除最小树上的边,最快的应该是树形dp优化的那个吧,刚刚忘记了,直接求出最小树,然后暴力原创 2014-06-03 20:44:57 · 655 阅读 · 0 评论 -
hdu4081 最小树+DFS或者次小树的变形
题意: 给你一个全图,在里面找到一棵树,这棵树最多只有一条边可以不是最小树(也可以是), 要求 那对特殊的边的两个权值/除了这条边其他边的和最大.思路: 方法有很多,最少有三种方法,我用两种方法做的,别的暂时没想到(太弱了); 第一种: 先求出来一颗最小树,然后枚举树上的边,枚举到每一条边的时候就假设把这条边删除了,然后分原创 2014-03-07 12:16:10 · 1193 阅读 · 0 评论 -
最小树 次小树 模板
最小生成树 两种算法,Kruskal 和 Prim ; Kruskal 是针对于稀疏图的,因为他的复杂度是跟边有关系的; 先sort一便,然后用并查集加边就行了,简单没什么说的. Prim 是针对于稠密图的,这个算法自己很少用,就是每次都找到加入后边最小的那个点加进来就行了,前两天hdu4756逼得我不得不看这个算法.原创 2014-03-07 13:16:19 · 924 阅读 · 0 评论 -
hdu4756 最小树+树形dp
题意: 给你一个完全图,让你在上面找到一颗最小树,然后问破坏这个最小树的某一条边后用其他边连接(要求最小)成新的树,然后输出破坏每一条边后最小树中最大的那个.思路: 先跑出一颗最小树,然后枚举树上的每一条边,当这条边被删除的时候,生成树就被分成了两个集合,然后找到一条最小的能让两个集合相通的替代边,最后输出最大的那个(树形dp优化),下面是我的ac记录原创 2014-03-07 11:31:16 · 1163 阅读 · 0 评论 -
hdu4126(MST + 树形dp
题意: 这个题目和hdu4756差不多,是给你一个图,然后是q次改变边的权值,权值只增不减,最后问你每次改变之后的最小树的平均值是多少.思路: 先跑一边最小树(建议用普利姆,别用克鲁斯卡尔,虽然网上有用k过的,但我感觉理论上会超时 n*n*nlog(n)/2),然后树形dp跑出任意两个集合之间的最有替代边.(n^2),然后当每次输入一条要该边的边的时候,原创 2014-03-08 12:58:11 · 1014 阅读 · 0 评论