最小生成树
eIectron
优美的代码是成功AC的第一步。看着那么多博客不再更新,这就是我几年后的状态吗?要是走了就再也不回来了。
展开
-
ZOJ QS Network(最小生成树)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 题目大意:给出点和点之间的花费大小,并且点和点之间建立联系还需要购买自身需要的适配器,也需要一定的花费。适配器只能用在一次联系上,多次联系则需要多个适配器。求如何花费最少使各点都联系起来。 题解:最小生成树,因为点和点之间联系需要购买适配器,所以把点和点之间的适配原创 2017-04-03 15:54:31 · 299 阅读 · 0 评论 -
POJ 3723 Conscription(mst)
http://poj.org/problem?id=3723 刷挑战之路 这道题也不算好搞啊,虽然1A,那也是看了挑战的想法然后再去写的。一开始想到是二分图,发现不对,因为可以男1号先来然后使得女2号,3号都减免,这是一对多,不符合二分图的一对一的性质。 看了挑战的想法,捋一捋大概就是。暴力每个点去建最大生成树,其实根本不需要考虑顺序之类的,只要能建立出这个树,得到mst,即可。因为在这省钱原创 2017-06-30 20:32:09 · 264 阅读 · 0 评论 -
BZOJ 1821 [JSOI2010]Group 部落划分(kruskal)
解法:一开始没想到怎么写,但是慢慢觉得,同一个部落里面的距离都是尽量短的,然后就像题目中的图一样两个部落之间的距离就会很长,这个长度其实是由这个部落里面某个人连出去和另一个部落的某个人的距离。我们直接跑一遍最小生成树就好了,这样自己部落的人的距离就是尽量短,然后这个生成树最长的几条边里面,直接输出倒数第k-1条即可。 代码如下: #include #include #include #incl原创 2017-09-07 18:13:04 · 234 阅读 · 0 评论 -
codevs1403 新三国争霸 (最小生成树+dp)
这道题目的题意其实我觉得挺迷的,不过写过bzoj1003物流运输的话,这两道题考察的知识点类似,就可以明白什么意思了。 只不过bzoj1003是最短路+dp,而这道题是最小生成树+dp。 代码如下: #include #include #include #include #include #include #include #include #include #include #includ原创 2017-09-27 10:28:57 · 350 阅读 · 0 评论 -
Vijos 1843 货车运输(最大生成树 + 树上倍增模板)
解法:首先想到肯定是尽量用边权大的边,所以直接用最大生成树建图即可。建完图之后,由于询问数很大,所以要想一个高效的求两点之间边权最小的边的办法。一开始想到树链剖分,感觉很麻烦,代码量巨大。想用LCA的ST表来维护,但是发现维护困难,因为是边而不是点。最后才知道要用树上倍增做。预处理出深度小的点到深度大的i点最小的边权是多少。先求出x和y的lca,然后直接求出x到lca, y到lca的最小边权。取最原创 2017-10-14 18:41:11 · 252 阅读 · 0 评论