题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520
题目大意:给定一棵关系树,每个节点有个权值,子节点和父节点不能同时选,问最后能选的最大价值是多少?
解题思路:树形DP入门题。由于子节点与父节点不能同时选,有人可能会用贪心思想,二者选其一肯定最优。其实不然,有可能父节点和子节点都不选,而要选子孙节点。不过只要再往深点想下,就可以得出...
分类:
其他好文 时间:
2014-06-05 07:40:29
阅读次数:
255
本文出自 http://blog.csdn.net/shuangde800
题目传送门
题意:
给出一棵树,求离每个节点最远的点的距离
思路:
把无根树转化成有根树分析,
对于上面那棵树,要求距结点2的最长距离,那么,就需要知道以2为顶点的子树(蓝色圈起的部分,我们叫它Tree(2)),距顶点2的最远距离L1...
分类:
其他好文 时间:
2014-06-05 06:56:39
阅读次数:
226
代码太丑就不贴了,,又是一篇无责任民科的题解。。
HDU 4828 Grids
看了一下跟卡特兰数差不多就猜了一下,具体为啥我也不知道。。然后有除法套个逆元。。
HDU 4830 Party
发现这个除了叶子节点可能是环,剩下就是一棵树了(如果是单独的环,就用虚拟节点0来连接一下)
剩下就是环状树形dp。。...
分类:
其他好文 时间:
2014-05-25 07:23:48
阅读次数:
281
题意:给你由N个点构成一颗树,问要孤立出一个有P个节点的子树最少需要删除多少条边。N的范围最大为150N的范围不大,很容易想到在树上面做背包。把每个节点都看成一个背包,然后把每个儿子节点都看成是一组物品。为什么是一组呢,那是因为假设以儿子为根的节点的子树有S个节点,那么就有S+1种情况,要么将这整棵...
分类:
其他好文 时间:
2014-05-23 10:05:26
阅读次数:
276
题意:给一棵树(每个节点是一个城市),每个节点上有一个人。每个人都要到另外一个城市,并且每个城市最后只能有一个人。问全局所有人旅行的最长的长度可以是多少。
解法:一定可以构造一种这样的情形:对于每条边,使得少的一边的所有人都到另一边去。这样就实现了每条边的最大化利用。一定是最优解。
代码:
/**********************************************...
分类:
其他好文 时间:
2014-05-23 01:30:08
阅读次数:
228
【原题】
3246: [Ioi2013]Dreaming
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 194 Solved: 68
Description
Serpent(水蛇)生活的地方有N个水坑,编号为0,...,N - 1,有M条双向小路连接这些水坑。每两个水坑之间至多有一条路径(路径包含一条或多条小路)相互连接...
分类:
其他好文 时间:
2014-05-21 16:29:01
阅读次数:
350
都不知道怎么分类了。
大概要求一个树中以某个结点为根的子树结点个数,还有儿子结点中以儿子结点为根的子树结点个数的最大值,用递归得到n[i],以i为根节点的子树结点个数
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define scan(a) scanf("...
分类:
其他好文 时间:
2014-05-18 07:26:01
阅读次数:
225
题目来源:UVa 10308 Roads in the North
题意:求距离最远的2点之间的距离
思路:裸的树的直径 或者树形DP
#include
#include
#include
using namespace std;
const int maxn = 100010;
struct node
{
int to, w;
node(){}
node(int to, int...
分类:
其他好文 时间:
2014-05-15 03:37:18
阅读次数:
295
中心节点就是树的中心,2遍dfs求到树的直径,而中心一定在直径上,顺着直径找到中心就够了。
然后可以一遍树形DP找到最小值或者二分+判断是否访问到叶子节点。
#include
#include
#include
#include
using namespace std;
struct node
{
int next;
int power;
int length...
分类:
其他好文 时间:
2014-05-13 11:28:38
阅读次数:
306
ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗?...
分类:
其他好文 时间:
2014-05-10 04:47:27
阅读次数:
286