树形动态规划 - 树中距离之和
题目链接
换根dp
首先dfs记录每个节点到左右子节点的距离和sum,和子节点个数cnt。
已知父节点的(sum,cnt)如何向子节点转移?
假设当前节点的信息为(sum,cnt),父节点的信息为(Fsum,Fcnt)。
那么子节点的sum = sum+[Fsum-sum-(cnt+1)] + [n-(cnt+1)]
class Solution {public:vector<vector<int>> g; vector<int> sum, cnt, ans;int n;vector<int> sumOfDistancesInTree(int N, vector<vector<int>>& edges) {sum.resize(N, 0);cnt.resize(N, 0);ans.resize(N, 0);n = N;g.resize(N, vector<int>{});for (auto it : edges) {g[it[0]].push_back(it[1]);g[it[1]].push_back(it[0]);}dfs1(0, 0);dfs2(0, 0);ans[0] = sum[0];return ans;}void dfs2(int fa, int x) {for (auto it : g[x]) {if (it == fa) continue;ans[it] = sum[x] + n - 2*(cnt[it]+1);sum[it] = ans[it];dfs2(x, it);}}pair<int,int> dfs1(int fa, int x) {for (auto it : g[x]) {if (it == fa) continue;pair<int,int> ret = dfs1(x, it);cnt[x] += ret.second + 1;sum[x] += (ret.second+1) + ret.first;}return {sum[x], cnt[x]};}
};
树形动态规划 - 树中距离之和相关推荐
- 834. 树中距离之和
834. 树中距离之和 解法一:超时的暴力解法 #include <iostream> #include <vector> #include <string> #i ...
- 834 树中距离之和
这道题我自己的想法只有对每个点都用一遍Dijkstra然后再求和,显然会超时,所以我都没有尝试. 研究了一下题解,发现题解很巧妙,自己对树的处理还是太稚嫩,之前树链剖分学的都忘光了. 对于固定根节点的 ...
- leetcode 834. 树中距离之和(dp)
给定一个无向.连通的树.树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 .第 i 条边连接节点 edges[i][0] 和 edges[i][1] .返回一个表示节点 i 与其他所有节 ...
- LeetCode 834. 树中距离之和(树上DP)*
文章目录 1. 题目 2. 解题 1. 题目 给定一个无向.连通的树.树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 . 第 i 条边连接节点 edges[i][0] 和 edges[ ...
- leetcode 834. Sum of Distances in Tree | 834. 树中距离之和(树形DP)
题目 https://leetcode.com/problems/sum-of-distances-in-tree/ 题解 一般的算法题,指令条数为 10^8 以内是可以通过的.也就是说,如果 arr ...
- c++ 不撞南墙不回头——树形动态规划(树规)
不撞南墙不回头--树规总结 焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...
- 不撞南墙不回头——树形动态规划(树规)
不撞南墙不回头--树规总结 焦作一中信息学oy 之所以这样命名树规,是因为树规的这一特殊性:没有环,dfs是不会重复,而 ...
- 一本通提高篇 树形动态规划
先写个考试 鸽着~ 考试有树 d p dp dp紫题 我回来了 每年联赛基本都有好几道题时树 d p dp dp,这块一定得好好学 U P D : 20201109 UPD:20201109 UPD: ...
- HDU1520 Anniversary party 树形动态规划
HDU1520 Anniversary party 树形动态规划 Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory ...
最新文章
- extern 关键字用法
- final 字符常量——确定一个值后该值无法改动,使变量变字符常量
- python pyqt5安装_Python3 安装PyQt5及exe打包图文教程
- java struts2下载文件_java struts2入门学习---文件下载的二种方式
- 框架通讯契约——接口
- git fetch实战以及与git pull 的区别
- 构建路径_深度学习的幸福课堂构建从评价细则中找“路径”——基于深度学习的幸福课堂构建实践研究...
- redis 集群 搭建(非哨兵)
- Visual Studio 开发环境安装与配置
- matlab求解普通函数的导数问题(diff函数的用法)
- windows 搭建kms服务器激活_OpenWrt搭建KMS服务器激活Windows和Office
- SPI全双工模式下收发字节的理解
- 算法创作|什么是数据结构
- Windows下安装Cygwin及包管理器apt-cyg(转)
- 漫画人物头像总是画不好?快看看这些注意点你有没有中招!
- 最详细的虚拟机安装教程
- 什么是TDK?什么是网站的TDK?扫(myself的)盲
- c# 如何抓微信把柄_C#手把手教你玩微信自动化
- 关闭Windows XP系统Beep提示音
- Office2022个人家庭版
热门文章
- 坑爹的jquery ui datepicker
- AtCoder Grand Contest 008: Contiguous Repainting(思维)
- sql server总结二
- iOS-英雄联盟人物展示
- win系统注册缺少的库 32位系统 64位系统
- ASP.NET身份验证机制membership入门——配置篇(1){转}
- [网络安全提高篇] 一〇五.SQL注入之揭秘Oracle数据库注入漏洞和致命问题(联合Cream老师)
- 【数据结构与算法】之深入解析“修剪二叉搜索树”的求解思路与算法示例
- 计算机网络的拓扑结构主要取决于它的( )
- 9.Vue 表单输入绑定