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

树形Dp 2925. 在树上执行操作以后得到的最大分数

2925. 在树上执行操作以后得到的最大分数
两次DFS

class Solution {
public:// 节点状态有两种,选和不选,// dp(u, fa, 0) 不选u 节点,其他节点都可以选,值为以u为根的子树的所有节点的和- 根节点的值。// dp(u, fa, 1) 选u节点, 其他子几点不选。vector<vector<int>> g;int n;vector<long long> gsum;void dfs(int u, int fa, vector<int>& values) {for (auto v : g[u]) {if (v == fa) continue;dfs(v, u, values);gsum[u] += gsum[v];}gsum[u] += values[u];return;}vector<long long> dp0;vector<long long> dp1;void Dfs2(int u, int fa, vector<int>& values) {dp1[u] += values[u];for (auto v : g[u]) {if (v == fa) continue;Dfs2(v, u, values);if (g[v].size() == 1) { // 叶子节点dp1[u] += dp0[v];} else {dp1[u] += max(dp1[v], dp0[v]);}}}long long maximumScoreAfterOperations(vector<vector<int>>& edges, vector<int>& values) {n = edges.size() + 1;g.resize(n);for (auto edge : edges) {g[edge[0]].push_back(edge[1]);g[edge[1]].push_back(edge[0]);}gsum.resize(n, 0);dfs(0, -1, values);cout << endl;dp0.resize(n);for(int i = 0; i < n; i++) {dp0[i] = gsum[i] - values[i];}dp1.resize(n);Dfs2(0, -1, values);return max(dp0[0], dp1[0]);}
};

一次dfs

class Solution {
public:// 节点状态有两种,选和不选,// dp(u, fa, 0) 不选u 节点,其他节点都可以选,值为以u为根的子树的所有节点的和- 根节点的值。// dp(u, fa, 1) 选u节点, 其他子几点不选。vector<vector<int>> g;int n;vector<long long> dp0;vector<long long> dp1;void Dfs2(int u, int fa, vector<int>& values) {dp1[u] += values[u];for (auto v : g[u]) {if (v == fa) continue;Dfs2(v, u, values);dp0[u] += dp0[v] + values[v];if (g[v].size() == 1) { // 叶子节点, 注意叶子节点的size 为1,不是0dp1[u] += dp0[v];} else {dp1[u] += max(dp1[v], dp0[v]);}}}long long maximumScoreAfterOperations(vector<vector<int>>& edges, vector<int>& values) {n = edges.size() + 1;g.resize(n);for (auto edge : edges) {g[edge[0]].push_back(edge[1]);g[edge[1]].push_back(edge[0]);}dp0.resize(n);dp1.resize(n);Dfs2(0, -1, values);return max(dp0[0], dp1[0]);}
};
http://www.lryc.cn/news/221649.html

相关文章:

  • 选择企业云盘?品牌推荐和评价解析
  • redis: 记录一次线上redis内存占用过大问题解决过程
  • 数据资产、数字资产、数据资源及数据资产入表
  • Docker之Centos安装
  • SQL注入漏洞:CMS布尔盲注python脚本编写
  • security
  • 了解web3,什么是web3
  • Harbor企业级Registry基础镜像仓库的详细安装使用教程(保姆级)
  • Linux系统下数据同步服务RSYNC
  • Docker介绍及其常用命令
  • SwissArmyTransformer瑞士军刀工具箱使用手册
  • unity【动画】脚本_角色动画控制器 c#
  • Java代码如何对Excel文件进行zip压缩
  • 改进YOLO系列:12.Repulsion损失函数【遮挡】
  • win11网络连接正常,但是无法正常上网
  • 硬科技企业社区“曲率引擎”品牌正式发布
  • 少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程三级真题解析(判断题)
  • MCU常见通信总线串讲(二)—— RS232和RS485
  • LazyVim: 将 Neovim 升级为完整 IDE | 开源日报 No.67
  • 想要搭建网站帮助中心,看这一篇指南就对了!
  • 92.更新一些收藏的经验贴总结学习
  • mysql 问题解决 4
  • llama-7B、vicuna-7b-delta-v1.1和vicuna-7b-v1.3——使用体验
  • 深入理解JVM虚拟机第十九篇:JVM字节码中方法内部的结构和与局部变量表中变量槽的介绍
  • windows好玩的cmd命令
  • 线扫相机DALSA--常见问题四:修改相机参数,参数保存无效情况
  • linux中用date命令获取昨天、明天或多天前后的日期
  • 【无标题】360压缩软件怎么用?超级好用!
  • 一图搞懂傅里叶变换(FT)、DTFT、DFS和DFT之间的关系
  • 行情分析——加密货币市场大盘走势(11.7)