斯坦纳树
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
2019.03.26【洛谷P4784】【LOJ2183】「BalticOI 2016 Day2」城市(最小斯坦纳树)
洛谷传送门LOJ传送门解析:斯坦纳树版题。考虑两种转移,拼凑和换根。令f[S][i]f[S][i]f[S][i]表示以iii为根,已经连通了SSS中的特殊点的最小代价。拼凑的转移直接枚举子集划分就行了。换根的转移和最短路是一样的。随便用一个DijkstraDijkstraDijkstra或者SPFASPFASPFA跑一跑就行了。当然这道题由于洛谷数据略毒,只能写DijDijDij...原创 2019-03-26 10:34:55 · 339 阅读 · 0 评论 -
2019.03.26【JLOI2015】【洛谷P3264】【BZOJ4006】【LOJ2110】管道连接(斯坦纳树)(状压DP)
洛谷传送门BZOJ传送门LOJ传送门解析:很显然,由于求的是令某些特殊点连接起来的最小代价,所以解应该是斯坦纳森林。先求出所有状态的斯坦纳树,然后枚举集合的划分,check一下同一频道的点是否全在或全不在当前状态中,之后直接转移就好了。代码:#include<bits/stdc++.h>#define ll long long#define re register...原创 2019-03-26 11:44:19 · 183 阅读 · 0 评论 -
2019.03.26【BZOJ4774】修路(斯坦纳树)(状压DP)
传送门解析:连通关键点的最小斯坦纳树森林。感觉这类题目还是挺版的,可以先做一下这道题,其实是一个套路代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_...原创 2019-03-26 13:39:45 · 148 阅读 · 0 评论 -
2019.03.26【WC2008】【洛谷P4294】【BZOJ2595】游览计划(斯坦纳树)
洛谷传送门BZOJ传送门解析:很裸的斯坦纳树,细节也不是很多,注意拼凑的时候要减去根节点的重复贡献。为了输出方案,只需要记录一下DPDPDP转移的方向就行了。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constn...原创 2019-03-26 15:38:11 · 106 阅读 · 0 评论 -
2019.03.26【CodeChef-CONNECT】Find a special connected block(斯坦纳树)(随机化)
传送门解析:一杯水,一包烟,一个bug改一天。我除了一包烟都齐了,TM一个j打成i调了一个晚上用DZYO的话来说:“这题真TM恶心啊”显然颜色数过多我们是没有办法做的。考虑将所有颜色随机映射到[0,k−1][0,k-1][0,k−1]中间的整数代码:#include<bits/stdc++.h>#define ll long long#define re reg...原创 2019-03-26 22:51:35 · 214 阅读 · 0 评论 -
2019.03.27【APIO2013】【洛谷P3638】【BZOJ3205】机器人(区间DP)(斯坦纳树)
洛谷传送门BZOJ传送门解析:首先我们可以为每一个位置标号,记f[l][r][pos]f[l][r][pos]f[l][r][pos]表示在pospospos位置中停留一个编号为l,rl,rl,r的复合机器人的最小推动次数。显然在同一个位置的转移可以用区间DP来实现。从一个位置转移到另外一个位置,发现转移是带后效性的,而且就是斯坦纳树的后效性形式。用记忆化搜索预处理出每一个位置向四个...原创 2019-03-27 10:02:18 · 483 阅读 · 0 评论 -
2019.03.27【THUSCH2017】【LOJ2977】巧克力(斯坦纳树)(随机化)(二分答案)
传送门解析:读完题发现这是一个很裸的斯坦纳树,但是中位数并不是很好处理。先不管那个中位数,考虑怎么拿70pts70pts70pts。对于颜色的限制,我们直接将所有颜色随机映射到[0,k−1][0,k-1][0,k−1]中的一个整数上,然后以每个点权值为111做最小斯坦纳树。发现正确的概率只有k!kk\frac{k!}{k^k}kkk!,所以我们需要随机个几百次,并且发现错误情况计算出...原创 2019-03-27 21:51:21 · 423 阅读 · 0 评论