题意: N 个点 N-1条边 每条边有权值 求每个点所能达的最长距离// 树形dp 2次dfs 一次转成有根树、并求出每个子树(以i为根)到叶子节点的最大距离 还有就是从与i相连的个子节点j遍历下去的最大距离 // 其实 每个子树(以i为根)到叶子节点的最大距离 就是 max(child[i][j]);#include #include #include #include #include #include #include using namespace std;#define MOD 1000000007#define maxn 10010vector E[maxn],V[maxn],c.
原创
2021-07-29 16:20:09
80阅读
简单题#include int sum(int a, int b){ int ret = 0; while (a) { ret += a % b; a /= b; } return ret;}int main(){ for (int i...
转载
2013-06-13 20:30:00
41阅读
2评论
ComputerTime Limit: 1000msMemory Limit: 32768KBThis problem will be judged onHDU. Original ID:219664-bit integer IO format:%I64d Java class name:MainA...
转载
2015-04-08 14:36:00
63阅读
【闲话】就算熬夜,也一定要先记录下这个题,我太开心了。。。。【题意】给了一颗树,询问这个树里面每个点到树上其他点的最大距离,这个题是属于树形DP的,在前几周还讲到了这个题,(一切都是缘分),今天在整理树形dp又发现这个题,然后这里说了,这个题可以直接维护每个点到树直径端点的两个距离的最大值!【分析】这么神奇吗?马上翻出树直径的板子,构思一下,20分钟写完debug的过程有点磁力呀,把max写成Mi
原创
2022-04-20 10:22:54
68阅读
//392K 0MS G++#include #include using namespace std;int demicalWeight[4] = {1, 10, 100, 1000};int duodecimalWe096};int getXDig
原创
2023-05-23 16:02:17
27阅读
Problem Description A school bought the first computer some time ago(so this computer's id is 1). During the recent years the school bought N-1 new co
转载
2017-05-18 23:51:00
67阅读
2评论
http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意: 给出一棵树,求出每个点到其他点的最远距离。 思路:对于每一个点,一方面它可以往它的子树方向走,另一方面可以往父亲结点的方向走。所以我们需要两次dfs,第一次用来求出每个点往其子树方向的最远距离和次远
转载
2017-02-12 20:05:00
63阅读
题目链接:[传送门]看不下去的题面:ComputerProblem DescriptionA school
原创
2022-10-25 16:33:57
68阅读
题意:给出一棵树,求出每个点与距离它最远的点的距离。
转载
2017-04-19 22:25:00
88阅读
2评论
Description Link 给定一棵树,求树上每个点到树上其他点的距离最大值。 其中 \(1\leq n\leq10^4\)。 Solution 经典的换根 DP。 首先我们可以明确每个点有两种方式走出去: 到子节点中的一个。 到父节点的其他子节点或父节点以上的节点的子节点。 考虑 DFS 求 ...
转载
2021-08-17 22:07:00
161阅读
2评论
基本的树形dp,需要dfs三次,第一次求每个点最远的后代,第二次和第三次每个点的孩子分别从左到右和从右到左遍历。#include #include using namespace std;#define D(x) const int MAX_N = (int)(1e4) + 5;int n;vect...
转载
2015-03-31 21:09:00
39阅读
2评论
【题目链接】 点击打开链接 【算法】 我们知道,一棵树上离某个节点最远的节点,可能是经过它的祖先,再到那个祖先的某个孩子,或者,是它的那颗子树中,离它最远的一个节点,就不难想到以下算法 : 第一遍DFS,搜出每个节点的子树中离它距离最远的孩子的距离和所经过的儿子,离它次远的孩子的距离和所经过的儿子
转载
2018-05-13 22:47:00
103阅读
2评论
Computer HDU - 2196 Computer A school bought the first computer some time ago(so this computer's id is 1). During the recent years the school bought N
转载
2017-06-10 17:58:00
41阅读
2评论
Computer
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5508 Accepted Submission(s): 2748
Problem Description
A school boug
原创
2023-08-15 17:34:32
73阅读
持续强化dp中……ComputerTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
原创
2022-11-22 20:03:21
52阅读
/*先走一遍dfs找到每个点到他的子节点的位置,回溯的时候找到最大值和次大值再用一个dfs来更新值,先看是否是u最长路上的点,如果是的话用最大值+权值更新最大值和次大值,否则的话用次大值+权值更新最大值和次大值*/#include#include#define N 11000struct node...
转载
2014-07-23 18:59:00
55阅读
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 30767 Accepted Submission(s): 3802 Probl
转载
2017-09-04 22:09:00
44阅读
2评论
求出每一点到所有点的最大距离,刚开始就有点想法求最长边的问题,但想了一会不知道怎么去把子节点转化成根节点。任选一点为根节点,先求出每个节点到子节点的最大距离和次大距离,然后更新每个子节点的最大,次大距离,就是把每个子节点当一次根节点,如果它在父节点的最大距离边上,就用次大距离+到父节点的距离与自己的最大次大距离比较,,,, #include#include#define N 10001int n,head[N],num,vis[N],dp[N][2];struct edge{ int st,ed,next,w;}E[N*2];void addedge(int x,int y,in...
转载
2013-07-31 19:42:00
84阅读
【题意】 给定一棵树,问对于每个点u,到树上另一个点v的最远距离 【分析】 对于每个u,最远距离要么是向子树方向的,要么是向上走到都一个父亲,再从这个父亲的位置向下走(不能走回来的方向)到的最远位置 显然我们要设计树形dp来解决这个问题,f[u]表示u子树内的最长距离,并记录一下最大的走的是哪个儿子 ...
转载
2021-09-05 16:52:00
95阅读
2评论