题意:给你n个寺庙,m个村庄,p条路,现在你要在这n+m个位置中选出若干个位置打井,每个位置打井的费用会告诉你,同时p条路也有修建费用,现在每个寺庙都住着一个和尚,问你最小的费用让这n个和尚都能喝上水. 思路:可以对照之前做的MST题目(https://www.cnblogs.com/hua-dong/p/11164702.html). 之前那个题是让所有点都喝上水,让后新建一个0号节点,向所有点连边,边权是打井的费用,然后跑最小生成树.   而本题是让所有寺庙有水,不关心村庄,所以应该是斯坦纳…
传送门 题意: 给出\(n\)个重要点,还有其余\(m\)个点,\(p\)条边. 现在要在这\(n+m\)个点中挖几口水井,每个地方的费用为\(w_i\).连接边也有费用. 问使得这\(n\)个地点都有水井(或直接.间接与水井相连)的最小代价. 思路: 有点巧妙..建立一个虚点连向所有点,边权为\(w_i\).然后直接求以\(0\)为根的斯坦纳树即可,最后再子集\(dp\)一下就行. 原理就是,此时这\(n\)个点连通,并且以\(0\)为根,脑补一下即可发现:要么直接与\(0\)相连,要么间接相…
题目链接 题意: 给出\(n\)个点,\(m\)条边,同时给出\(p\)个重要的点以及对应特征. 现在要选出一些边,问使得这\(p\)个所有特征相同的点相连,问最小代价. 思路: 斯坦纳树的应用场景一般就为:使得一些点连通,在此基础上,允许连接一些其它的点,加入一些其它的边.可以说最小生成树是斯坦纳树的一个特例. 那么这个题首先看到要使\(p\)个点连通,那么就可以斯坦纳树搞一搞. 因为题目要求特征相同的点相连,斯坦纳树搞出来后还不够,他要求的是一个斯坦纳树森林. 我们将特征相同的所有点扣出来,…
https://cn.vjudge.net/problem/HDU-4085 给你n,m,k ,分别表示有n个点,m条边,每条边有一个权值,表示修复这条边需要的代价 从前k个点中任取一个使其和后k个点中的某一个点,通过边连接,并且必须是一一对应,问最小的代价是多少. 先用斯坦纳树模板求出f[i][1<<k]    然后用dp[i]表示所有点为根的情况下连通状态为i的最小花费 这样我们就可以从1dp到1<<k得到答案 注意dp之前要先判总状态是否合法 再判子集是否合法 最后再进行dp…
[Luogu4294] 题解 : 斯坦纳树 \(dp[i][j]\) 表示以\(i\)号节点为根,当前状态为\(j\)(与\(i\)连通的点为\(1\)) 当根\(i\)不改变时状态转移方程是: \(dp[i][j] = \min_{s \in j}\{dp[i][s] + dp[i][\complement_js] - val[i]\}\) 当根改变时,要求\(i,k\)相邻 : \(dp[i][j] = \min\{dp[k][j] + val[i]\}\) 记录\(pre[i][now]\…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3311 [题意] 给定k座庙,n个其他点,m条边,点权代表挖井费用,边权代表连边费用,问使得k座庙里的所有和尚都能吃到水的最小费用. [思路] 首先一个相连的块里只要有口井就能保证块里的和尚有水.所以这个题目标并不是要让k个点连通,但我们可以转化一下. 在原图的基础上我们添加0号结点,由0号结点向所有的点连边为该点的点权,代表挖井的费用,从而保证每个块里都有井,则问题转化为求以0为根包含k个点的斯…
题意:见题面(我发现自己真是越来越懒了) 有N*M的矩阵,每个格子有一个值a[i,j] 现要求将其中的K个点(称为关键点)用格子连接起来,取(i,j)的费用就是a[i,j] 求K点全部连通的最小花费以及方案 n,m,k<=10 思路:斯坦纳树 虽然去年就疑似过了一道裸题,不过估计也是COPY的std,早就忘干净了 先%了一发论文,看到了几道有意思的SPFA的应用,准备去做一下 设dp[i,j,sta]为当前在(i,j),关键点联通情况为sta的最小花费 显然初始化 \[ dp[i,j,1<&l…
(1)集合中元素表示(1<<i), i从0开始 (2)注意dp[i][ss] = min(dp[i][ss], dp[i][rr | s[i]] + dp[i][(ss ^ rr) | s[i]]);,后面的要 |s[i],保证状态的正确 (3)INF初始化CLR(dp, 0x3f) (4)注意斯坦纳树状态理解,分层松弛的理解 参考:http://endlesscount.blog.163.com/blog/static/821197872012525113427573/ //#pragma…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4006 [题意] 给定n点m边的图,连接边(u,v)需要花费w,问满足使k个点中同颜色的点都连通的最小费用. [思路] 题目所求斯坦纳森林. 如果我们知道满足颜色集合S连通的最小值g[S],则有转移式: G[S]=min{ g[s] , G[S’]+G[S-S’] } 则G[(1<<C)-1]即答案,G[S]定义为使得颜色集合S中所有相同颜色的点都连通的最小值. 这里的g[S],其实…
传送门 题意:略 论文 <SPFA算法的优化及应用> http://www.cnblogs.com/lazycal/p/bzoj-2595.html 本题的核心就是求斯坦纳树: Steiner Tree: Given an undirected graph with non-negative edge weights and a subset of vertices, usually referred to as terminals, the Steiner tree problem in g…