【题解】P1131 [ZJOI2007] 时态同步

news/2025/10/7 9:17:01/文章来源:https://www.cnblogs.com/ymcblog/p/19127868

P1131 [ZJOI2007] 时态同步

题目传送门

题目大意:
给你一棵带边权的树,求出使所有叶节点到根节点的路程相同的最少操作数(每次操作边权加 1 )

STEP 1.

看到这个题目后,我们就可以联想到一棵树了,具体来讲:

\(n\) 个节点只有 \(n-1\) 条边 \(\implies\)
激发器 \(\implies\) 根节点
终止节点 \(\implies\) 叶节点
电流通过导线的时间 \(\implies\) 边权

尝试使用 树形DP 完成。

STEP 2.

\(f(i)\) 表示从第 \(i\) 个节点发出电流,所有 \(i\) 的子树的叶节点到 \(i\) 路程相同的最少需要操作的次数,

\(num(i)\) 表示当从第 \(i\) 个节点发出电流,所有 \(i\) 的子树的叶节点到 \(i\) 路程相同的操作次数达到最少时,从第 \(i\) 个节点到达叶子节点需要的时间。

经过分析可得,\(num(i)\)(所有 \(i\) 的子树的叶节点到 \(i\) 路程相同的操作次数达到最少时,从第 \(i\) 个节点到达叶子节点需要的时间) 就是其孩子的 \(num\) 加上孩子与其的距离的最大值,具体来说:

\(num(i)=\max\limits_{j∈children_i}num(j)+len(j)\)

(这里的 \(len(x)\)\(x\) 到其父节点的距离)

\(f(i)\) 则为其所有子节点的子树里达到时态同步最少需要操作的次数之和 加上到达叶子节点需要的时间减去所有子树的 \(num(j)\) 加上与其子树的距离这两项的和,具体来说:

\(f(i)=\sum\limits_{j∈children_i}dp(j)+\sum\limits_{j∈children_i}num(i)-(num(j)+len(j))\)

(这里的 \(len(x)\)\(x\) 到其父节点的距离)

需要注意的是,这里的 \(num(x)\) 需要先预处理完毕后再求 \(f(x)\)

最后的答案就是 \(f(root)\),这里的 \(root\) 就是激发器(根节点)。

STEP 3.

将视角转向数据范围:

  • 对于 \(40\%\) 的数据,\(1\le N\le 1000\)
  • 对于 \(100\%\) 的数据,\(1\le N\le 5\times 10^5\)
    对于所有的数据,\(1\le t_e\le 10^6\)

显然,由于 \(t_e\le 10^6\) ,存 \(f(x)\)\(num(x)\) 时,需要开 \(\large{long\space long}\)

STEP 4.

个人存图只爱用 vector 了(带边权就用 vector+pair)

代码(凭良心复制)
#include<bits/stdc++.h>
using namespace std;
#define ll long longint n, rt, a, b, t;
vector<pair<int, int>> tr[500005];
ll dp[500005], num[500005];void dfs1(int i, int fa) {num[i] = 0;for(auto it : tr[i]) {int j = it.first;int dis = it.second;if(j == fa) continue;dfs1(j, i);num[i] = max(num[i], num[j] + dis);}
}void dfs2(int i, int fa) {dp[i] = 0;for(auto it : tr[i]) {int j = it.first;int dis = it.second;if(j == fa) continue;dfs2(j, i);dp[i] += dp[j] + (num[i] - (num[j] + dis));}
}int main() {cin >> n >> rt;for(int i = 1; i < n; i++) {cin >> a >> b >> t;tr[a].push_back({b, t});tr[b].push_back({a, t});}dfs1(rt, 0);dfs2(rt, 0);cout << dp[rt];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云怎么做静态网站求一个免费的企业邮箱

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…

电商网站设计是干什么的怎么开网店做代理

程序跑出下面的异常&#xff1a;com.ibm.websphere.ce.cm.DuplicateKeyException: ORA-00001: 违反唯一约束条件 (EOMS3.SYS_C0024492)&#xff0c;参考下面的文章了解到我的程序可能是序列的问题。&#xff08;果然是序列产生的最小值设置的太小&#xff0c;将序列值设置大之后…

LGP9120 [NOIP 2022.5] 密码锁 学习笔记

LGP9120 [NOIP 2022.5] 密码锁 学习笔记 洛谷链接 前言 这道 \(\text{LOCK}\) 是二三年春测的最后一道题。作为一道 \(\texttt{CNDS}\),因为随机化算法的存在而显得有点黯然失色。然而,将这道题对扫描线的(相对)复…

深入解析:OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()

深入解析:OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

中小企业网站制作407网站后台管理系统进不去怎么办

MySQL单列索引是我们使用MySQL数据库中经常会见到的&#xff0c;MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解&#xff0c;下面就为您分析两者的主要区别&#xff0c;供您参考学习。 为了形象地对比两者&#xff0c;再建一个表&#xff1a; CREATE TABLE myInde…

网站设计弹窗厦门seo外包公司

PS&#xff1a;基于一点小小兴趣&#xff0c;写了这篇笔记。 点构图 中心点构图 将主体放到画面中心。突出主体&#xff0c;但会显得有些平庸没有太出彩的地方&#xff0c;较为呆板。拍摄人物的话可以结合景色拍摄一些人物表达出明显情绪或者动作充满活力的姿态。 三分点构图…

机器人技术奖学金项目助力STEM教育发展

某机构机器人部门宣布2022年"第一天奖学金"14位获奖者,该项目支持来自 underrepresented 背景的学生攻读机器人、工程、计算机科学等领域的硕士学位,提供全额奖学金、实习机会和行业导师指导。机器人技术奖…

三、Sqoop 全量导入核心命令 - 实践

三、Sqoop 全量导入核心命令 - 实践2025-10-07 09:05 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

喀什做网站wordpress活动召集插件

spark的集群主要有三种运行模式standalone、yarn、mesos&#xff0c;其中常被使用的是standalone和yarn&#xff0c;本文了解一下什么是standalone运行模式&#xff0c;并尝试搭建一个standalone集群 一、standalone模式 standalone模式&#xff0c;是spark自己实现的&#xf…

手机怎么做优惠券网站怎么样黑进网站后台

----------------| 本文目录 |---------------- 1. 进程1.1 基本概念1.2 描述进程 - PCB1.2.1 task_struct - PCB的一种1.2.2 task_struct 内容分类 1.3 组织进程1.4 查看进程1.5 通过系统调用获取进程标示符1.6 通过系统调用创建进程 - fork初识 2. 进程状态2.1 看看Linux内核…

网站备案注销找哪个部门网站建设 阳江

时光飞逝&#xff0c;一转眼24年的第一个季度已经过去了&#xff0c;回望这3个多月&#xff0c;感触颇多。首先&#xff0c;24年从一个一心只读圣贤书&#xff0c;全身心投入在技术上的研发工程师&#xff0c;转变为一个团队的小leader。从我个人对自己的定位来说&#xff0c;我…

SAP ABAP 事务码 RZ12 里的 Max Number of WPs Used 参数的作用介绍

在 SAP 系统中,Max Number of WPs Used 参数在事务码 RZ12 中的 RFC 服务器组配置中扮演了非常关键的角色。这个参数定义了在该服务器组中可以使用的工作进程(Work Process, WP)的最大数量。工作进程是 SAP 系统中执…

中国煤炭建设协网站wordpress怎么装修网页

为什么要学习设计模式&#xff1f; 要知道设计模式就是软件工程的方法经验的总结&#xff0c;也是可以认为是过去一段时间软件工程的一个最佳实践&#xff0c;要理解&#xff0c;不要死记硬背。掌握这些方法后&#xff0c;可以让你的程序获得以下好处&#xff1a; 代码重用性…

建设银行 北京招聘网站学校如何建设网站

1. 引言 本文将从Web应用程序处理请求时需要用户信息&#xff0c;同时HTTP又是无状态协议这个矛盾点出发。从该问题出发&#xff0c;简单描述了解决该问题的Token 机制&#xff0c;进而引出Cookie的实现方案。 基于此我们将详细描述Cookie的规范&#xff0c;然后详细描述具体…

广州专业的网站建设公司哪家好黄骅在线

刚刚接触Mendix低代码两周&#xff0c;花了一周在b站看初级视频然后考完初级&#xff0c;第二周开始做个列表查询感觉照葫芦画瓢没啥难度。但最近要求写个导出列表数据&#xff0c;在mendix社区翻了翻&#xff0c;这个功能算是常见的。找了mendix官方提供的Docs磕磕盼盼才实现了…

busybox 没有 clear 命令吗

是的,BusyBox 默认不包含 clear 命令。 替代方案 1. 使用 echo 命令bash 复制下载echo -e "\033c"或者bash 复制下载printf "\033c"2. 使用快捷键 在终端中按 Ctrl + L 也可以清屏 3. 创建别名…

实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法

实用指南:Hive SQL 中 BY 系列关键字全解析:从排序、分发到分组的核心用法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

高阶数据结构——并查集 - 详解

高阶数据结构——并查集 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

网站建设方案范文网站建设详细报价

继续炒股。第一题是买卖股票的最佳时机IIIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/&#xff0c;与上题不同的是&#xff0c;本题要求买卖的次数要限制在2次以内。对上题的dp数组&#xff0c;显然要增加它的状态以适应题目要求。对于遍历…

经过基于流视频预测的可泛化双手运行基础策略

经过基于流视频预测的可泛化双手运行基础策略pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…