P3174 [HAOI2009]毛毛虫(树形dp)】的更多相关文章

P3174 [HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数. 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N ).你可以假定没有一对相同的 (a, b) 会出现一次以上…
这道题细节处理不少,但要AC不难: 设以i节点为根节点的子树能形成的最大的毛毛虫长度为f[i],则f[i]=max(f[j])+i节点的孩子数: 答案需要f最大和次大的两个子树合并,而且若合并的位置不是根节点,ans++: 我就是坑在了最后一点上,最后打表找到了问题: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; int n,m,f[maxn],child[max…
题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数. 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N ).你可以假定没有一对相同的 (a, b) 会出现一次以上. 输出格式: 在文本文件 worm.o…
题目大意:给一棵树,求其中最大的“毛毛虫”,毛毛虫的定义是一条链上分出几条边 题解:把每个点的权值定义为它的度数减一,跑带权直径即可,最后答案加二 卡点:无 C++ Code: #include <cstdio> #include <cctype> namespace __IO { namespace R { int x, ch; inline int read() { ch = getchar(); while (isspace(ch)) ch = getchar(); for…
[HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数. 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N ).你可以假定没有一对相同的 (a, b) 会出现一次以上. 输出格式…
题目链接 树形DP水题,设f[x][0]是以x为根的子树,内部只有半条链(就是链的两个端点一个在子树里,一个不在子树里)的最大值,f[x][1]是以x为根的子树,内部有一条完整的链(选两个内部的子树作为链的左端点和右端点)的最大值. 于是可以很轻松的得出DP方程: 一开始f[x][0]=f[x][1]=1 然后dfs,深搜x的子树,记录一下x有多少子节点的同时记录子树的最大半链和次大半链(用来在转移的时候凑成x子树内的整个链).最后注意细节乱搞搞就行了. 本题不考思维但是比较考验考虑细节的能力.…
前言: 虽然很多人和我想法一样 ,但我还是不要脸地写了这题解 题目: 链接 大意: 在一棵树上取一条最长链以及它所连接的结点总共的结点个数 思路: 取链: 用树形\(DP\)就可以轻而易举的解决这个问题: \(f_x\)表示以\(x\)为根节点的树的深度 转移方程: \[f_x=max\{f_y + 1 \} (y\in son(x))\] 那么以\(x\)为根节点的树的最长链就是\(f_x\)加上次大的子树深度,下方代码区以\(ans\)来表示. 代码: void dp(int x, int…
题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数. 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N ).你可以假定没有一对相同的 (a, b) 会出现一次以上. 输出格式: 在文本文件 worm.o…
Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Description Yixght is a manager of the company called SzqNetwork(SN). Now she's very worried because she has just received a bad news which denotes that DxtNet…
可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话dp貌似就比较麻烦了. 我们考虑一般树形dp都是怎样的,一般的树形dp,都是因为子树上的f值可以无后效的转移到根节点上,并且子树的f值与父亲无关,如果我们按照上述定义,那么就会发现这需要两遍dfs来解决,并且细节不少. 但是两遍dfs我并不会QAQ 所以我们考虑转换一种定义,设f[x][k]表示在以x…