在有根树中,两个结点u和v的公共祖先中距离最近的那个称为最近公共祖先(lowest common ancestor)、如图lca(4,7) = 2, lca(6,8)=1, lca(5,8)=5记点v到根的深度为depth[v], 那么如果w是点u和v的公共祖先的话, 让u向上走depth[u] -...
分类:
编程语言 时间:
2015-05-19 00:23:40
阅读次数:
661
题意:询问树上从u到v的路径是否经过k思路:把树dfs转化为有根树后,对于u,v的路径而言,设p为u,v的最近公共祖先,u到v的路径必定是可以看成两条路径的组合,u->p,v->p,这样一来便可以将判断条件转化为(LCA(u,k)=k || LCA(v,k)=k)&& LCA(k,p)=p。由于这个...
分类:
其他好文 时间:
2015-05-17 07:07:45
阅读次数:
132
题目大意:给出一棵树,每条边都有一个权值,要求求出从每个点出发的最大权值和解题思路:无根树先转化成有根树,以1为根
先dfs一次,求出以某个点为根,通过子节点所能到得到的最大权值和,和次大权值和,并纪录求得最大权值和的那个子节点
这样我们只考虑了通过子节点得到最大权值和的情况,但要求最大权值和,当然还要判断通过父节点得到最大权值和是否会大于通过子节点得到最大权值和,怎么判断呢?
设dp[i]为...
分类:
其他好文 时间:
2015-05-15 15:41:04
阅读次数:
134
题目大意:给出一棵N个点的无根树,每个节点都有对应的值
现要求你找出一棵K个节点的子树,使得这棵子树上的值的和最大解题思路:无根树先化为有根树,以0为根
K个节点的子树,K个节点里面的任意一个节点都可以为根,所以就不用考虑哪个节点是这棵子树的根的问题了,只需要由根0向下递归寻找就可以了
用dp[i][j]表示以i为根节点且节点数为j的树的和的最大值
那么dp[i][j] = max(dp[i...
分类:
其他好文 时间:
2015-05-15 09:07:26
阅读次数:
148
题目大意:给出一个无向图(树),要求你删除掉其中一个点,使剩下的点构成的子树中,节点数最大的那个值达到最小解题思路:因为给出的是一个无根树,第一个想法就是先把它转成有根树,将1当成根
设sum[i]为以i为根节点的子树有多少个节点,那么sum[1] - sum[i]就相当于是排除了i的所有子节点的另一棵子树的节点总数了
设dp[i]为去掉了i节点后的剩余节点所构成的子树的节点的最大值
那么dp...
分类:
其他好文 时间:
2015-05-14 08:43:29
阅读次数:
126
题意:一棵n个节点的有根树,树的边有正整数权,表示两个节点之间的距离,你的任务是回答这样的询问,从根节点出发,走不超过x单位的距离,最多能走多少个节点,节点经过多次算一个,对于每次的询问输出:经过节点数最大的值。 注意题目给出的 i, j,d,其中 j 是 i 的父节点。
思路:树形DP,设 d[ i ][ j ][ k ] 表示以第i个节点为根节点的子树机器人访问j个节点走的最少的路程,k==0表示访问完后又回到i节点,k==1 表示访问完后不回来,
则状态转移方程为:
d[x][j+k][0] ...
分类:
其他好文 时间:
2015-05-13 10:32:41
阅读次数:
127
4001: [TJOI2015]概率论Time Limit:10 SecMemory Limit:128 MBSubmit:262Solved:108[Submit][Status][Discuss]DescriptionInput输入一个正整数N,代表有根树的结点数Output输出这棵树期望的叶子...
分类:
其他好文 时间:
2015-05-10 14:05:41
阅读次数:
139
题意:给定一棵树,求出树上的一点,使得树上的全部点到该点的距离之和最小。思路:暴力显然是O(N^2)等死对吧。我们首先将无根树转化为有根树,然后一边dfs求出f[i],size[i].f[i]表示以i为根的子树中全部的点到i的距离之和,size[i]表示以i为根的子树的点数。以下開始脑洞大开:如今对...
分类:
其他好文 时间:
2015-05-08 23:35:46
阅读次数:
133
问题:输入一个结点的无根树的各条边,并指定一个根结点,要求把该树转化为有根树 测试oj:nyoj http://acm.nyist.net/JudgeOnline/problem.php?pid=20 当结点数很多时若用邻接矩阵存储图将占用很大的空间,此时可使用vector或邻接表存储,由于vect...
分类:
其他好文 时间:
2015-05-06 10:40:11
阅读次数:
119
题目大意:给定一棵有根树,每个点上有一些樱花,现在要求删除一些节点,删除节点的樱花和子节点都会连到父节点上,要求每个节点的樱花数+子节点数不超过mm,求最多删多少个节点这数据范围也只能贪心了吧= =
令fif_i为以节点ii为根的子树中能删除的最多节点(ii节点不删),gig_i为删除最多节点的情况下ii号节点的最小负重
那么首先对于每个节点我们对于所有的子节点为根的子树尽量删,然后考虑如何删除...
分类:
其他好文 时间:
2015-05-05 22:01:27
阅读次数:
163