2 条题解
-
3
zyc2000 LV 9 @ 7 年前
第一次递交55,明天AC了来补全代码。
2018.3.13更:今天发现昨天的思路是错的,重新写一遍思路。引用的这一段是错的。
先讲思路。
一看数据范围,就知道肯定是 状压DP 。再看到题目中说每个点联通一遍,就知道肯定是 状压集合DP 。
马上想到集合DP经典模型: TSP问题 。
TSP状态转移方程式如下
可是这道题与TSP又有不同:TSP的点一个一个选进集合,构成了一条路径,可是这里需要的是一颗树。路径和树的最大区别是 路径添加点时只能在已有边界点添加,然而树却可以在任意点添加点并形成树枝 ,因此状态转移方程式如下
初始化 dp[1 << stp][stp][1] = 0; 遍历 dp[(1<<n)-1] 的后两个状态 [v][nth] 即可得到答案。
以下开始正确思路
这个问题和TSP问题的不同之处不仅是点添加的位置,因为是树的生成, 这里的集合可以从两个集合合并而来,因此像TSP一个一个选点进集合会漏解!
数据卡的不是特别紧,用昨天的错误思路居然可以得50分!
状态转移方程式
完整代码
评测情况
PS:看了luogu题解区,神牛们说这种状压DP貌似还没有暴搜+剪枝快
-
01 年前@
- 1
信息
- ID
- 2032
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 252
- 已通过
- 73
- 通过率
- 29%
- 被复制
- 11
- 上传者