[NOIp2017]宝藏 题解

非常巧妙的 \(O(n^23^n)\) 做法。
题目的本质是要求一棵生成树,使得其每条边的长度与这条边的起点深度乘积的和最小。
我们使用状压 DP,考虑到当前状态与已经打通的点和深度有关,不妨设 \(f(S,x)\) 为当前所打通点集合为 \(S\),且当前树深度为 \(x\) 时的最小花费。状态转移方程 \[f(S,x)=\min_{S_0\subsetneq S}\left\{f(S_0,x-1)+x\cdot \sum_{u\in S_0}\left(\min_{v\in S \backslash S_0}w(u,v)\right)\right\}\] 翻译成人话就是,枚举当前状态的真子集,作为第 \(x-1\) 层的状态,将真子集的补集作为当前 \(x\) 层的点,找到向第 \(x-1\) 层连边的最小花费之和(当然,还要保证 \(S_0\) 可以扩展到当前状态)。

猜你喜欢

转载自www.cnblogs.com/wzzyr24/p/12318005.html