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

10.9 换根dp

F. Tree with Maximum Cost

问题 - F - Codeforces — Problem - F - Codeforces

换根dp模版题。

和P3478 POI 2008] STA-Station - 洛谷那题差距只在点权。

和P2986 USACO10MAR] Great Cow Gathering G - 洛谷奶牛那题差距在点权和边权。

题意:设顶点为v,最大化∑i=1ndis(i,v)⋅ai\sum_{i=1}^ndis(i,v)⋅a_ii=1ndis(i,v)ai

思路:先让1为顶点,求出∑i=1ndis(i,1)⋅ai\sum_{i=1}^ndis(i,1)⋅a_ii=1ndis(i,1)ai。再遍历换根,保存最大值为答案。

换根的公式推理见下:

我们以2,3->4->5->1为例,容易发现以1为根贡献相当于:2+3 +2+3+4 +2+3+4+5。

如果转移5为根,原本5的子树2 3 4 5都变近了,只有它的上子树1变远。

发现改变后的贡献为: 2+3 +2+3+4 +1 这相当于dp[1]-siz[5]+(n-siz[5]);

同理,我们将5转移为4发现: 2+3 +5+1 +1 相当于dp[4]-siz[4]+(n-siz[4])。

我们可以用dfs求出根的子树点权值和,用n减去就是它的上子树点权值和。

故得到换根转移公式: dp[u] = dp[fa] - siz[u] + (sum - siz[u])

int siz[N]; // i子树的点权和
int dp[N];  // 以i为根的答案
void solve()
{cin >> n;rep(1, i, n){cin >> a[i];sum += a[i];}m = n - 1;while (m--){cin >> x >> y;e[x].emplace_back(y);e[y].emplace_back(x);}auto dfs1 = [&](this auto &&self, int u, int fa, int dep) -> void { // 计算以1为根siz[u] = a[u];for (auto x : e[u]){if (x == fa){continue;}self(x, u, dep + 1);siz[u] += siz[x];dp[1] += siz[x];}};auto dfs2 = [&](this auto &&self, int u, int fa) -> void { // 向子节点换根if (u != 1)dp[u] = dp[fa] - siz[u] + (sum - siz[u]);//换根之后,原根的子树都变小了,上子树变大for (auto x : e[u]){if (x == fa){continue;}self(x, u);}};dfs1(1, 0, 1);dfs2(1, 0);ans = 0;for (int i = 1; i <= n; i++)ans = max(ans, dp[i]);cout << ans;
}
http://www.dtcms.com/a/462618.html

相关文章:

  • 上海做网站设计温州专业微网站制作多少钱
  • Trino:一个开源分布式大数据SQL查询引擎
  • 网站建设岗位职责做网站能致富吗
  • 网站优化方案设计wordpress删除用户头像
  • C# 弃元模式:从语法糖到性能利器的深度解析
  • 外国优秀网站欣赏广东茂名网站建设
  • 网站备案的用户名是什么广州比较好的网站建设
  • INT301 Bio-computation 生物计算(神经网络)Pt.1 导论与Hebb学习规则
  • 百度站长平台男女做暖暖的网站大全
  • 乌克兰集团网站建设wordpress 产品目录
  • C#基础16-C#6-C#9新特性
  • 两个RNA-蛋白以及蛋白间相互作用数据库
  • 《低速园区场景下决策模块的成本函数设计与编程实践》
  • 网站推广方法是什么企业网站建设cms系统
  • SpringBoot 集成 LangChain4j 本地调用 Ollama
  • 大前端最新网站设计一个企业官网的栏目
  • Vue 菜单权限管理的计与实现
  • 怎么自己做网站共享办公室 设计
  • Linux进程第八讲——进程状态全景解析(二):从阻塞到消亡的完整生命周期
  • 网站设计审美角度公司手机网站建设
  • 【数据结构】优先级队列(堆)
  • 合肥网站建设首选 晨飞网络nas的wordpress的端口
  • 动漫网站开发优势网店交易哪个平台好
  • Python 中的集合(set)知识大全
  • 网站开发工具的功能包括现在的公司都有自己的网站吗
  • 浏览器访问百度首页的七层协议协作流程
  • 陕西中小企业网站建设推广促销直播网站开发
  • 算起计算器APP发布
  • 做类似淘宝的网站设计需要什么视频素材模板免费下载网
  • 商业网站源码安卓app是用什么语言开发的