当前位置: 首页 > news >正文

洛谷 P3959

NOIP 2017 提高组

给定 \(n\) 个点,\(m\) 条边的无向连通图。要选出一棵有根生成树,设 \(u\)\(fa_u\) 之间的边长度为 \(l_u\),总代价为 \(\sum l_u \cdot dis(u, root)\),求最小总代价是多少?

\(n \le 12, m \le 1000\)

看看数据范围要能想到是状压。大概率不是 \(2^n\)

首先还是要先把 \(root\) 确定好,不然不好做。令 \(f(S)\) 表示 \(S\) 中的点组成的生成树的最小代价,然后发现不好转移,因为你无法确定加入的点的最小深度。

这有个小 trick,我们可以一层层的加入节点,这样加入节点 \(u\) 时只跟上一层又哪些节点有关了。于是可以设计出这样一个状态:令 \(f(d, S, T)\) 表示现在生成树已经有了 \(d\) 层,\(S\) 内的点在生成树中,最后一层组成的节点是 \(T\),枚举第 \(d + 1\) 层的点 \(T'\),就有了个 \(O(n^24^n)\) 的做法。

考虑优化,其实发现 \(T\) 其实是可以抛弃的(似乎也只有这个可能抛弃)。我们之所以要记录这一维,是因为我们要知道哪些点可能在第 \(d + 1\) 层,实际上直接将 \(T\) 看成 \(S\) 是无所谓的,因为不与 \(T\) 相连但与 \(S - T\) 相连的点显然放在更低层更优(\(d\) 更小但 \(l\) 不变),枚举到也无所谓。

于是时间复杂度变成了 \(O(n^23^n)\),需要枚举子集。

运用了一个按层加入的 trick,设计出一个比较又前途的 DP,再优化掉一维即可。

http://www.jsqmd.com/news/67389/

相关文章:

  • 西城区离婚律师事务所推荐:专注婚姻家事法律服务机构
  • 西城区离婚律师事务所推荐:专注婚姻家事法律服务机构
  • 北京婚姻法律师事务所排名及综合实力解析
  • 治疗白带异常品牌哪家好?女性健康护理品牌解析
  • 工厂电动扫地车品牌推荐:行业热门选择解析
  • 12月8号
  • 三种数组创建方法
  • 水下的成长——Goodbye 2025
  • 东城区离婚律师事务所推荐:专注婚姻家事的法律服务机构
  • 模切机供应商哪家强?国内优质企业实力与业务解析
  • 海淀区婚姻律师事务所推荐:聚焦家事法律领域的专业机构一览
  • 口碑好的治疗白带异常的品牌推荐 女性健康守护指南
  • Codeforces Round 1069 (Div. 2) A-E2
  • 北京分割房产最好的律师事务所服务信息参考
  • 出门改变
  • 朝阳区婚姻律师事务所推荐:聚焦家事法律服务机构综合盘点
  • 北京胜率高的婚姻律师事务所有哪些
  • 道3:英语能力的提高,必须由“可理解性输入”、“低情感过滤”和“足量”共同驱动
  • 北京婚姻律师事务所推荐:专注家事法律服务机构盘点
  • 2025/12/8 今天学的day3的lecode209和3
  • 模切机品牌推荐:国内优质选择及核心优势解析
  • 工业吸尘器厂家有哪些?行业热门品牌推荐
  • 20251208
  • 朝阳区离婚律师事务所推荐:专注婚姻家事法律服务机构盘点
  • 北京离婚官司最厉害的律所:聚焦婚姻家事法律服务的专业机构盘点
  • 北京处理家暴案件厉害的律所推荐及法律服务参考
  • 工业洗地机品牌推荐:口碑之选与实用选购参考
  • Advanced Algorithm —— LP Rounding
  • TCP通信
  • 电动扫地车厂家有哪些?行业知名品牌推荐