[POI2008] STA-Station/洛谷P3478(树形dp)

[ P O I 2008 ] S T A − S t a t i o n ( 树形 d p ) \Huge{[POI2008] STA-Station(树形dp)} [POI2008]STAStation(树形dp)

题目链接:[P3478 POI2008] STA-Station - 洛谷

文章目录

  • 题意
  • 思路
  • 标程

题意

给定一个 n n n个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。

一个结点的深度之定义为该节点到根的简单路径上边的数量。

数据范围

  • 1 ≤ n ≤ 1 0 6 1 \le n \le 10^6 1n106
  • 1 ≤ u , v ≤ n 1\le u,v \le n 1u,vn

思路

这是一道比较经典的树形dp问题。

假设以 x x x点作为根节点, y y y x x x的一个子节点;并令 b [ x ] b[x] b[x]为x节点的子节点个数, r e s [ x ] res[x] res[x]为以 x x x作为根节点时的深度之和, d e p [ x ] dep[x] dep[x]为x的深度。

那么我们可以计算出,若将跟节点从 x x x换为 y y y,那么可以得到: r e s [ y ] = r e s [ x ] − b [ y ] + ( n − b [ y ] ) res[y]=res[x] - b[y] + (n - b[y]) res[y]=res[x]b[y]+(nb[y])

  • − b [ y ] -b[y] b[y]是因为其每个后代节点的度都减小 1 1 1
  • + ( n − b [ y ] ) +(n-b[y]) +(nb[y])是因为 x x x的每个后代节点都增加 1 1 1

并且,我们首先设 1 1 1为根节点,然后通过一次 d f s dfs dfs求出 d e p [ ] , b [ ] dep[~],b[~] dep[ ],b[ ];由每个点的深度我们可以求出 r e s [ 1 ] res[1] res[1]。然后再从1开始 d f s dfs dfs一次求出所有节点的 r e s [ ] res[~] res[ ]。最后比较哪个节点的 r e s [ ] res[] res[]值最大即可。

标程

#define int long long 
const int N = 1e6 + 10; int n, b[N], dep[N], res[N];
vector<int> a[N];void dfs1(int x, int y) {dep[x] = dep[y] + 1;b[x] = 1;for(auto i : a[x]) {if(i == y) continue;dfs1(i, x);b[x] += b[i];}
}void dfs2(int x, int y) {for(auto i : a[x]) {if(i == y) continue;res[i] = res[x] + b[1] - 2 * b[i];dfs2(i, x);}
}void Solved() { cin >> n;for(int i = 1; i < n; i ++ ) {int x, y; cin >> x >> y;if(x == y) continue;a[x].push_back(y); a[y].push_back(x);}dfs1(1, 0);for(int i = 1; i <= n; i ++ ) res[1] += dep[i];dfs2(1, 0);int t = 1, mx = 0;for(int i = 1; i <= n; i ++ ) {if(res[i] > mx) t = i, mx = res[i];}cout << t << endl;
}

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

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

相关文章

js无感删除url搜索部分,不刷新页面

如&#xff1a;把下面的网址 http://127.0.0.1:5173/?code3b9cc36e&state 改成 http://127.0.0.1:5173 history.pushState(null, 网站标题, location.origin)

TikTok越狱检测之二 <调试器检测>

来了&#xff0c;调试器检测。总结如下,多多指教: 检测app 是否被附加调试: 原理就是检测父进程是否 launchd启动&#xff0c;在OS X和iOS 系统中&#xff0c;用户环境始于launchd&#xff0c;为用户态出现的第一个进程&#xff0c;为所有的进程的祖先&#xff0c;launchd 的进…

Python模块、包和异常处理

大家好&#xff0c;在当今软件开发领域&#xff0c;Python作为一种简洁、易读且功能强大的编程语言&#xff0c;被广泛应用于各种领域。作为一名测试开发工程师&#xff0c;熟练掌握Python的模块、包和异常处理是提高代码可维护性和错误处理能力的关键。本文将和大家一起探讨Py…

SAP-MRP和采购申请

1、如果采购申请是手工创建的,跑MRP会不会被覆盖? 创建一个采购申请18089476,然后运行MRP-MD03,再用MD04查看下 从上图看,手工创建的采购申请被打上*号,没有被覆盖掉。 2、如果采购申请被审批了,会不会被覆盖掉? 首先创建一个独立需求MD61 然后库存消耗掉为0,运行M…

shell实现ssh服务防止暴力破解 —— 筑梦之路

实现原理 对系统登陆日志文件/var/log/secure&#xff0c;进行数据筛选&#xff0c;查找登陆失败的ip地址&#xff0c;然后将ip加入到黑名单中。 脚本内容 #!/bin/bash# 获取登陆失败的ip地址failedcat /var/log/secure|grep "Failed"|awk {print $11}|sort|uniq …

普源精电收购耐数电子——用“钞能力”拿下“量子”?

「量子市界」聚焦量子前沿&#xff0c;揭秘市场动态┃2024年4月30日&#xff0c;普源精电新增“量子科技”概念。 似乎一夜之间&#xff0c;新增“量子科技”概念的上市企业如雨后春笋般登场——普源精电就是其一。普源精电本就持有耐数电子32.26%股权&#xff0c;于4月2日发布…

c4d云渲染是工程文件会暴露吗?

在数字创意产业飞速发展的今天&#xff0c;C4D云渲染因其高效便捷而备受欢迎。然而&#xff0c;随着技术应用的深入&#xff0c;人们开始关注一个核心问题&#xff1a;在享受云渲染带来的便利的同时&#xff0c;C4D工程文件安全吗&#xff1f;是否会有暴露的风险&#xff1f;下…

【如何让论文中摘要后面的内容不出现在目录中】

首先选择摘要二字&#xff0c;设置为一级标题&#xff0c;然后选择摘要后面的内容设置为正文样式&#xff0c;再选择这一部分看一下是不是都是正文大纲级别&#xff0c;如果是那就可以了。 具体流程如下 1、选择摘要二字&#xff0c;设置为一级标题样式 2、选择摘要后面的文…

x264 码率控制原理:rate_estimate_qscale 函数

rate_estimate_qscale 函数 原理 函数功能:根据目前使用的实际比特数更新一帧的qscale;是一个复杂的决策过程,需要考虑多种因素,如帧类型、编码的复杂度、目标比特率、缓冲区大小等,以确保视频质量和文件大小之间的平衡。函数参数分析:x264_t *h :编码器上下文信息结构…

扩散模型学习1

DDPM 总体训练原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 讲得很好&#xff1a;每次都是输入t和noise-x的图像&#xff0c;预测noise之后得到和加入的noise比较&#xff1b…

LLM实战:当网页爬虫集成gpt3.5

1. 背景 最近本qiang~关注了一个开源项目Scrapegraph-ai&#xff0c;是关于网页爬虫结合LLM的项目&#xff0c;所以想一探究竟&#xff0c;毕竟当下及未来&#xff0c;LLM终将替代以往的方方面面。 这篇文章主要介绍下该项目&#xff0c;并基于此项目实现一个demo页面&#x…

Java并发: 锁和同步

在Java并发: 面临的挑战那一篇中我们提到锁和同步是实现并发安全(可见性/原子性)的方法之一。这一章我们来讲讲Java中的锁和同步的各种工具&#xff0c;包括: LockSupportAbstractQueuedSynchronizerJava内置的锁实现 1. LockSupport LockSupport是基于Unsafe的park/unpark实…

智能禁区监控:计算机视觉在人员禁区闯入检测中的应用

基于视觉分析的人员禁区闯入行为检测算法主要依赖于计算机视觉技术和深度学习算法。这些技术结合高性能的摄像头和图像处理硬件&#xff0c;实现了对监控区域内人员行为的自动识别和分析。具体来说&#xff0c;这种检测算法利用摄像头捕捉的视频数据&#xff0c;通过深度学习模…

Kubernetes 应用滚动更新

Kubernetes 应用版本号 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 对象&#xff0c;而是两个命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;当然它们也要搭配部署应用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里应用都是以 …

nssctf——web

[SWPUCTF 2021 新生赛]gift_F12 1.打开环境后&#xff0c;这里说要900多天会有flag&#xff0c;这是不可能的 2.f12查看源码&#xff0c;然后在html中查找flag &#xff08;在最上方的栏目中&#xff0c;或者按ctrlf&#xff09; [SWPUCTF 2021 新生赛]jicao 1.打开环境是一段…

Fragment问题:java.lang.IllegalStateException

错误提示&#xff1a; Process: com.example.accountapp, PID: 3987 java.lang.IllegalStateException: Could not execute method for android:onClick …

Vue速成学习笔记

这两天速成了一下Vue&#xff0c;在这里记录一下相关的笔记&#xff0c;之后有时间详细学Vue的时候再来回顾一下&#xff01; 一、Vue理解 1、Vue的核心特征&#xff1a;双向绑定。 在网页中&#xff0c;存在视图和数据。在Vue之前&#xff0c;需要使用JavaScript编写复杂的逻…

web前端面试题

web前端面试题 1、前端如何实现优化性能 (1)减少网络时间 ①使用DNS缓存技术 ​ ②减少需要传输的文件尺寸 ​ ③加快文件传输速度 (2)减少发送的请求数量 ①利用浏览器缓存 ​ ②使用合并的图片文件 (3)提高浏览器下载的并发度 ①JS文件放在HTML文档最后 ​ ②使用多个域名 (…

音视频及H264/H256编码相关原理

一、音视频封装格式原理&#xff1a; 我们播放的视频文件一般都是用一种封装格式封装起来的&#xff0c;封装格式的作用是什么呢&#xff1f;一般视频文件里不光有视频&#xff0c;还有音频&#xff0c;封装格式的作用就是把视频和音频打包起来。 所以我们先要解封装格式&#…

谷歌上架,个人号比企业号好上?“14+20”封测如何解决,你知道了吗

在Google Play上架应用&#xff0c;对开发者而言&#xff0c;既是挑战也是机遇。随着谷歌政策的不断更新&#xff0c;特别是要求2023年11月13日后注册的个人开发者账号在发布正式版应用前&#xff0c;必须经过20人连续14天的封闭测试。 这一政策的改变使得许多开发者开始考虑使…