【学习笔记】最小斯坦纳树
比赛前的算法复习
最小斯坦纳树
洛谷模板题
最小斯坦纳树,指在一张带权无向图中,给定指定的k个点,询问联通这k个点的最小路径权值和。
这种问题所给出的k一般较小,所以可以用状压DP来解决。
显然结论:最终选出的边构成的图一定是棵树
由此,我们可以定义 为当前以 为根,联通了集合 的点所需的最小权值和。
对于当前点 ,有两种转移方式:
其中为和相邻的点,此转移相当于换根
其中 为 的子集,此转移可看作以 为根时的子树状态合并。
所包含点是单增的,所以我们可以从小到大枚举。
考虑第一种转移,形式类似于最短路,直接跑最短路就行。
第二种转移枚举子集
子集枚举模板
点击查看代码
for(int k=s&(s-1);k<=(1<<n);k=s&(k-1)){
...
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探