洛谷 T692586:树上选点 ← 树形DP
【题目来源】https://www.luogu.com.cn/problem/T692586【题目描述】给定一棵有 n 个结点的无向树结点编号为 1∼n。每个结点 i 有一个权值 ai可以为负数、零或正数。现在要从这些结点中选出若干个使得1对于树中的每一条边 (u,v)不能同时选中结点 u 和结点 v2所有被选中结点的权值之和尽可能大。请你计算在满足条件的前提下可以得到的最大权值和是多少。【输入格式】第一行一个整数 n表示结点数。第二行包含 n 个整数 a1a2…an表示每个结点的权值。接下来 n−1 行每行两个整数 uv表示在结点 u 和结点 v 之间有一条无向边。保证给定的边构成一棵树。【输出格式】输出一个整数表示在满足“不选相邻点”条件下选出的结点权值和的最大值。【输入样例】51 2 3 4 51 21 33 43 5​​​​​​​【输出样例】11【数据范围】对于全部数据1≤n≤20−10^9≤ai≤10^9输入保证是一棵连通无向树。【算法分析】● 树形DP本质上就是在树结构上进行的动态规划。由于树具有天然的递归性质因此我们可以将原问题分解为若干子树上的子问题。首先先分别求解每一棵子树然后再将这些子问题的解逐层向上合并最终得到整棵树的最优解。​​​​​​​● 如何把树变成DP能用的样子首先选一个根节点。树原本是无向的因此需要任选一个节点比如 1 号节点作为根从而将无根树转化为有根树。这样一来就能清晰地分辨出每个节点的父节点和子节点。其次用 DFS 递归遍历。由于父节点的状态依赖于子节点的状态所以一般采用后序遍历的顺序先递归处理完所有的子节点最后再处理当前节点本身。最后定义状态要紧扣问题。状态通常写作dp[u][...]其中 u 表示当前节点而方括号里的内容则需根据具体题目来设计——比如“选或不选当前节点”、“当前节点到叶子的最长距离”等等。【算法代码】#includebits/stdc.h using namespace std; typedef long long LL; const int N5e35; vectorint g[N]; LL val[N],dp[N][2]; void dfs(int u,int fa) { dp[u][1]val[u]; dp[u][0]0; for(int v:g[u]) { if(vfa)continue; dfs(v,u); dp[u][1]dp[v][0]; dp[u][0]max(dp[v][0],dp[v][1]); } } int main() { int n; cinn; for(int i1; in; i) cinval[i]; for(int i1; in; i) { int u,v; cinuv; g[u].push_back(v); g[v].push_back(u); } dfs(1,-1); coutmax(dp[1][0],dp[1][1]); return 0; } /* in: 5 1 2 3 4 5 1 2 1 3 3 4 3 5 out: 11 */【参考文献】https://blog.csdn.net/hnjzsyjyj/article/details/155581179https://blog.csdn.net/hnjzsyjyj/article/details/140286717https://blog.csdn.net/hnjzsyjyj/article/details/140309677

相关新闻

高效制作专业幻灯片的完全指南:Marp for VS Code实用教程

高效制作专业幻灯片的完全指南:Marp for VS Code实用教程

高效制作专业幻灯片的完全指南:Marp for VS Code实用教程 【免费下载链接】marp-vscode Marp for VS Code: Create slide deck written in Marp Markdown on VS Code 项目地址: https://gitcode.com/gh_mirrors/ma/marp-vscode Marp for VS Code是一个强大的…

2026/7/6 3:04:17阅读更多 →
Flutter 开发鸿蒙实战:Windows 环境下从 HAP 构建到四 Tab 页面运行

Flutter 开发鸿蒙实战:Windows 环境下从 HAP 构建到四 Tab 页面运行

Flutter 开发鸿蒙实战:Windows 环境下从 HAP 构建到四 Tab 页面运行 很多初学者第一次用 Flutter 开发鸿蒙时,最容易卡在两个地方:一是看到项目里生成了 ohos 目录,就忍不住直接改鸿蒙工程;二是构建时不知道应该先启动…

2026/7/6 3:04:17阅读更多 →
nlpconnect/vit-gpt2-image-captioning 超详细入门解析

nlpconnect/vit-gpt2-image-captioning 超详细入门解析

nlpconnect/vit-gpt2-image-captioning 超详细入门解析 ✨ 简介:vit-gpt2-image-captioning 是 Hugging Face 开源的轻量化、开箱即用的英文图像描述模型,也是新手入门图像字幕(Image Captioning)任务的首选模型。模型基于 ViT 视觉编码器 + GPT2 文本解码器架构,无需复杂…

2026/7/6 3:04:17阅读更多 →
《雾中之塔》 动漫|在线观看

《雾中之塔》 动漫|在线观看

《雾中之塔》 动漫|在线观看资料可在线播放《雾中之塔》https://tool.nineya.com/s/1jskahdln English Practice Mystery Fantasy Edition 以《雾中之塔》为主题的英语练习,边追番边学英语。Part 1 Vocabulary Choose the best word.The tower appeared only when…

2026/7/6 3:59:21阅读更多 →
流媒体推荐系统四层架构落地实践:召回、粗排、精排、重排

流媒体推荐系统四层架构落地实践:召回、粗排、精排、重排

1. 这不是“推荐算法课”,而是一份流媒体平台推荐系统落地手记你打开视频App,首页刷出的前五条内容,有三条是你点开就看的;你刚看完一部悬疑剧,第二天“猜你喜欢”里就出现了同导演、同编剧、甚至同摄影风格的片子&…

2026/7/6 3:59:21阅读更多 →
一、关于类型

一、关于类型

什么叫做类型?简单地说,类型就是把内存中的一个二进制序列赋予某种意义。比如,二进制序列0100 0000 0111 0000 0001 0101 0100 1011 1100 0110 1010 0111 1110 1111 1001 1110如果看作是64位无符号整数类型就是4643234631018606494 而按照IEE…

2026/7/6 3:59:21阅读更多 →
深度学习张量广播机制:原理、规则与高效代码实践

深度学习张量广播机制:原理、规则与高效代码实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个在深度学习框架中至关重要的基础概念:张量运算和广播。对于任何使用 PyTorch、TensorFlow 或 NumPy 进行…

2026/7/6 3:59:21阅读更多 →
STM32H750VBT6中ADCINP与INN什么区别

STM32H750VBT6中ADCINP与INN什么区别

在 STM32H750VBT6 的高级 ADC 架构中,每个物理采样通道的引脚名称经常会出现 INP(正输入)和 INN(负输入)。 它们的核心区别在于:STM32H7 的 ADC 支持“差分输入(Differential)”和“…

2026/7/6 3:59:21阅读更多 →
商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱

商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱

开过咖啡店、装过联合办公、做过商业展厅的朋友都懂,配电布局绝对是装修前期最容易踩的坑:插座布少了,后期加设备要拖插排乱不说,还容易过载跳闸;布多了,闲置的插座丑还浪费钱,换个业态还要砸墙…

2026/7/6 3:54:20阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →