题目链接: Poj 1741 Tree这个题目Tle的好苦啊,原来一直是树的重心没找对,Tle好长时间,终于对了,好感动,先贴个代码。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 ...
分类:
其他好文 时间:
2015-07-26 22:31:40
阅读次数:
202
题目链接: Poj 1655 Balancing Act题目描述: 给出一个树,求删除一个节点后形成的森林中,包含节点最多的子树最少包含几个节点?解题思路: 就是求树的重心,套用模板就可以了。 重心定义:在树中删除一个节点形成的森林后,包含节点最多的子树中节点最少,那么这个删除的节点叫做重心...
分类:
其他好文 时间:
2015-07-26 18:43:20
阅读次数:
90
POJ 1655 Balancing Act (树形dp 树的重心)...
分类:
其他好文 时间:
2015-07-22 14:38:49
阅读次数:
110
简单的树形dp,顺便学习了树的重心的概念,即以该点为根的树的最大子树的结点数最少。poj 1655: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 20001; 7 int head[N];...
分类:
其他好文 时间:
2015-07-20 01:11:36
阅读次数:
207
最近学了下点分治说道点分治就得先说到树的重心树的重心的定义是:最大的子树最小的节点。为什么要找树的重心呢因为找到树的重心把他变成根以后,最大的子树的大小不超过n/2,否则如果超过n/2将该子树的根作为重心将会更优。这样可以保证递归的层数不超过logn层,同时保证每个点最多被计算logn次。那么如何找...
分类:
其他好文 时间:
2015-07-16 00:37:48
阅读次数:
122
题目大意:给定一棵仙人掌,求有多少自同构仙人掌同构问题= =
曾经出过一个判断两个仙人掌是否同构的题,感觉和这个题很类似首先假设这是一棵树,考虑怎么做我们首先找到树的重心(如果有两个就在中间加一个点变成一个)
然后把树Hash
对于一棵树 如果某一哈希值的子树有kk个 就把答案乘上一个k!k!现在变成了仙人掌,那么我把每个环变成一个红点连向环上的所有点,然后把原先环上的边拆除,可以得到一棵树,...
分类:
编程语言 时间:
2015-07-10 15:16:21
阅读次数:
254
某次模拟赛的T2 强迫症题目大意:判断一棵树是否对称。思路:首先,一棵树的重心一定在对称轴上。一棵树是否对称有两种情况:有点在对称轴上和没有点在对称轴上。没有点在对称轴上的情况一定有两个重心(但有两个重心并不一定没有点在对称轴上)。有两个重心时,我们只需要算出两个重心对应子树的hash值,然后比较,...
分类:
其他好文 时间:
2015-07-05 19:52:51
阅读次数:
100
题目地址:POJ 1655
树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡.
树的重心可以用树形DP快速的找出来。
代码如下:#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-06-24 21:07:53
阅读次数:
133
题目地址:POJ 3107
还是裸的树的重心,只不过这个要求将所有的重心都输出。很简单。
代码如下:#include
#include
#include
#include
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2015-06-24 21:05:52
阅读次数:
183
Balancing Act
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 10375
Accepted: 4296
Description
Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...
分类:
其他好文 时间:
2015-06-21 19:51:35
阅读次数:
217