4006: [JLOI2015]管道连接 Time Limit: 30 Sec Memory Limit: 128 MB Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报站,那么这两个情报站就 建立了通道连接.形式化地,若 ui…
题目链接 题目描述 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰.该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报站,那么这两个情报站就建立了通道连接.形式化地,若 ui 和 vi 建立了通道,那么它们建立了通道连接:若 ui 和 vi 均与 ti 建立了通道连接,那么 ui 和 vi 也建立了通道连接…
Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1171  Solved: 639[Submit][Status][Discuss] Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报…
题目描述 给出一张 $n$ 个点 $m$ 条边的无向图和 $p$ 个特殊点,每个特殊点有一个颜色.要求选出若干条边,使得颜色相同的特殊点在同一个连通块内.输出最小边权和. 输入 第一行包含三个整数 n;m;p,表示情报站的数量,可以建立的通道数量和重要情报站的数 量.接下来 m 行,每行包含三个整数 ui;vi;wi,表示可以建立的通道.最后有 p 行,每行包含 两个整数 ci;di,表示重要情报站的频道和情报站的编号. 输出 输出一行一个整数,表示任意相同频道的情报站之间都建立通道连接所花费的…
[BZOJ4774]修路 Description 村子间的小路年久失修,为了保障村子之间的往来,法珞决定带领大家修路.对于边带权的无向图 G = (V, E),请选择一些边,使得1 <= i <= d, i号节点和 n - i + 1 号节点可以通过选中的边连通,最小化选中的所有边的权值和. Input 第一行两个整数 n, m,表示图的点数和边数.接下来的 m行,每行三个整数 ui, vi, wi,表示有一条 ui 与 vi 之间,权值为 wi 的无向边. 1 <= d <= 4…
题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4006 (luogu)https://www.luogu.org/problemnew/show/P3264 题解: 终于写出来斯坦纳树了.. 我一直不明白的地方是: spfa那种转移为什么是直接加边权?为什么没有一些特殊情况(如从根转移到儿子)不是加边权?后来觉得大概是因为那种特殊情况如果出现,则一定会在枚举子集的转移中被转移到. 做法就是,先对每个特殊点的子集求出来最小…
题目链接 题目大意:有一张无向图,每条边有一定的花费,给出一些点集,让你从中选出一些边,用最小的花费将每个点集内的点相互连通,可以使用点集之外的点(如果需要的话). 算是斯坦纳树的入门题吧. 什么是斯坦纳树呢? 假定有这样的题目:给你一张无向图和一个点集,每条边有一定的花费,让你选出一些边使点集内的所有点连通,求最小花费. 可以发现,如果点集大小为2,那么就转化成了一个两点间最短路问题. 而如果点集大小为总点数,那么就转化成了一个最小生成树问题. 进一步可以推出,如果点集大小为3,那么答案就相当…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4006 除了模板,就是记录 ans[ s ] 表示 s 合法的最小代价.合法即保证 s 里同一种的连通,整体可以不连通.ans[  ] 也枚举子集转移即可,初值就是模板算出来的 dp[ ][ s ] 最小值. #include<cstdio> #include<cstring> #include<algorithm> #include<queue> us…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4006 用斯坦纳树求出所有关键点的各种连通情况的代价,把这个作为状压(压的是集合选择情况)的初值DP即可. 代码如下: #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> #define pb push_back usi…
BZOJ_4006_[JLOI2015]管道连接_斯坦纳树 题意: 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报站,那么这两个情报站就 建立了通道连接.形式化地,若 ui 和 vi 建立了通道,那么它们建立了通道连接:若 ui 和 vi 均 与 ti…
4006: [JLOI2015]管道连接 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1020  Solved: 552[Submit][Status][Discuss] Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站…
管道连接 bzoj-4006 JLOI-2015 题目大意:给定一张$n$个节点$m$条边的带边权无向图.并且给定$p$个重要节点,每个重要节点都有一个颜色.求一个边权和最小的边集使得颜色相同的重要节点互相连通. 注释:$1\le c_i \le p \le 10$,$1\le u_i,v_i,d_i\le n\le 10^3$,$0\le m\le 3\cdot 10^3$,$0\le w_i\le 2\cdot 10^4$.其中$c_i$和$d_i$分别是第$i$个节点的颜色和编号. 想法:…
明显是一道斯坦纳树的题. 然而这题只需要属性相同的点互相连接. 我们还是照常先套路求出\(ans[s]\). 然后对\(ans[s]\)做子集DP即可. 具体看代码. #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> using namespace std; const in…
题目链接 题意: 给出\(n\)个点,\(m\)条边,同时给出\(p\)个重要的点以及对应特征. 现在要选出一些边,问使得这\(p\)个所有特征相同的点相连,问最小代价. 思路: 斯坦纳树的应用场景一般就为:使得一些点连通,在此基础上,允许连接一些其它的点,加入一些其它的边.可以说最小生成树是斯坦纳树的一个特例. 那么这个题首先看到要使\(p\)个点连通,那么就可以斯坦纳树搞一搞. 因为题目要求特征相同的点相连,斯坦纳树搞出来后还不够,他要求的是一个斯坦纳树森林. 我们将特征相同的所有点扣出来,…
[题目链接] 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],其实…
传送门 感觉对斯坦纳树还是有很多疑惑啊…… 等到时候noip没有爆零的话再回来填坑好了 //minamoto #include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?E…
LINK:管道连接 一张无向图 有P个关键点 其中有K个集合 各个集合要在图中形成联通块 边有边权 求最小代价. 其实还是生成树问题 某个点要和某个点要在生成树中 类似这个意思. 可以发现 是斯坦纳树问题.但是有些集合是不必要连起来的 我们可以使用子集合并 将一些状态给合并起来. 例如 我们设f[i][s]表示到达某个点形成的位置集合为s的最小代价可以发现s之中全部都是联通的 但是s之中可能可以不连通 但是我们让其强行联通 最后再将联通的状态合并起来 就是答案了. (说白了其实是进行状态强制合并…
题目描述 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰.该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报站,那么这两个情报站就建立了通道连接.形式化地,若 ui 和 vi 建立了通道,那么它们建立了通道连接:若 ui 和 vi 均与 ti 建立了通道连接,那么 ui 和 vi 也建立了通道连接. 现在在…
Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 报站 ui 和 vi 之间可以花费 wi 单位资源建立通道. 如果一个情报站经过若干个建立好的通道可以到达另外一个情报站,那么这两个情报站就 建立了通道连接.形式化地,若 ui 和 vi 建立了通道,那么它们建立了通道连接:若 ui 和 vi 均 与 ti 建立了通道连接,那么 ui 和 vi 也建…
裸的状压DP 令$f_S$表示包含颜色集合S的最小斯坦纳生成森林的值,于是有: $$f_S=\min\{f_S,f_s+f_{S-s}|s\subset S\}$$ 然后嘛...还是裸的斯坦纳树搞搞...又是个状压[摔! 貌似会TLE的说[额... 然后PoPoQQQ大爷分析了一番,说,大概1E的复杂度,不会T! 好,那就不会好了!(也太不求上进了吧) /************************************************************** Problem:…
前言:     如果还不知道斯坦纳树的童鞋可以看这两篇博客: 我的:https://blog.csdn.net/jerry_wang119/article/details/80001711 我一开始学习的:https://blog.csdn.net/wu_tongtong/article/details/78992913 这道题,在我学习斯坦纳树之前就翻到了,是在洛谷上搜状压的时候看到的.那个时候还不知道斯坦纳树是个什么玩意,不过马上进行了学习. 然而学习了之后也没有什么卵用,发现并不只是斯坦纳…
[Luogu3264] 原题解 多个频道,每个频道的关键点要求相互联通 详见代码,非常巧妙 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<queue> #define debug(...) fprintf(stderr,__VA_ARGS__) #define Debug(x) cout<<#x<<&qu…
「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cctype> #include <cstring> #include <algorithm> using std::min; const int N=1<<10; template <class T> void read(T &x) { x=0;cha…
题解 我们先跑一个斯坦纳树出来 斯坦纳树是什么,是一个包含点集里的点联通所需要的最小的价值,显然他们联通的方式必然是一棵树 我们可以设一个状态为\(dis[i][S]\)表示以第i个点为根,点集为\(S\)的点联通所需要的最小价值 我们可以从小到大枚举\(S\) 有两种更新方法 \(dis[i][S] = min(dp[j][S] + w(i,j),dis[i][S])\) \(dis[i][S] = min(dis[i][T] + dis[i][S ^ T],dis[i][S])\) 我们只要…
Description 传送门 Solution 题目要求相同颜色的点必须在一个连通块中,但会有多个颜色同属一个连通块使得解更优的情况. 想一想DP能否行得通:设\(g_i\)表示已考虑颜色状态为\(i\)时,最小合法方案的代价. 首先,\(g_i\)可以有一个直观的初值:由颜色属于\(i\)的点构建的一棵最小生成树的边权和.(初始化) ​ 接下来,如何考虑两部分颜色各自的连通块合起来作为最优解的情况?(两子集合并更新) ​ 更新\(g_i\)时,我们枚举\(i\)的两个不相交子集\(s_1,s…
题意:见题面(我发现自己真是越来越懒了) 有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…
这题一看显然是一个裸的斯坦纳树 我们用$f[i][j]$表示经过的路径中包含了状态$i$所表示的点,且连接了$j$号点的最短路径. 显然,$f[i][j]=min\{f[i$^$k][j]+f[k][j]\}$, 其中$i $&$ k = k$. 转移完毕后,跑一个最短路去更新一遍. 那么显然这题的时间复杂度是$O(2^k\times 最短路时间复杂度)$. 但是这题神TM卡SPFA.... 我后来改写了$dij$,再加了个避免重复更新的判断,才过了... #include<bits/std…
[BZOJ4774]修路(动态规划,斯坦纳树) 题面 BZOJ 题解 先讲怎么求解最小斯坦纳树. 先明白什么是斯坦纳树. 斯坦纳树可以认为是最小生成树的一般情况.最小生成树是把所有给定点都要加入到联通块中.而斯坦纳树不一样,斯坦纳树只需要把指定点集中的所有点全部加入到联通块中,并且允许使用点集以外的点. 然而求解最小斯坦纳树是一个\(NP\)问题,所以只能状压解决. 设\(f[S][i]\)表示指定点的联通情况为\(S\),并且当且的斯坦纳树以\(i\)为根,\(i\)可以是图上任意一个点. 考…
---题面--- 题解: 这是一道斯坦纳树的题,用状压+spfa来解决 什么是斯坦纳树? 一开始还以为是数据结构来着,其实跟最小生成树很像,大致就是最小生成树只能在各个点之间直接相连,而斯坦纳树则允许间接相连. 就是允许在图中添加新的点,再通过连接新的点来将指定点联通.这些新点可能是被限定的(给定点),比如这道题. 说到这里,你可能已经发现了,最小生成树其实就是斯坦纳树的一种特殊情况. 不过斯坦纳树其实是一个NPC问题,但是在做题的时候我们可以利用状压来解决小范围内的斯坦纳树问题 那么这道题应该…
游览计划 bzoj-2595 wc-2008 题目大意:题目链接.题目连接. 注释:略. 想法:裸题求斯坦纳树. 斯坦纳树有两种转移方式,设$f[s][i]$表示联通状态为$s$,以$i$为根的最小代价. 第一个转移就是$f[s][i]=f[t][i]+f[s-t][i]$.这个显然但是是针对边权的,这个题我们需要减掉多算的点权更新答案. 第二个转移是相同的$s$,即$f[s][i]=f[s][j]+E[i][j]$. 发现很像三角形不等式,用$spfa$转移即可. 代码2595: #inclu…