树形dp
Jiahe Xu
为何要去攀登珠穆朗玛峰,因为她就在那里啊.
展开
-
zoj3965 由2个dfs序还原二叉树
题意:给定两个二叉树的dfs序,输出每个节点的父节点,根的父节点为0,保证有解题解:当前节点在两个串中后面的节点假如不同则能确认两个子树,如果相同则把下个点作当前点的一个儿子。如果子树中还有未连根的点则接到当前点下。son数组表示每个点的子树有多少个点。pos数组记录每个数在每个序列中的位置。dfs中p1,p2指向同一个数lim1,lim2表示当前点子树可能最大的子树范围。ps:比赛的原创 2017-04-24 19:03:23 · 942 阅读 · 0 评论 -
zoj3949 Edge to the Root树形dp
题意:给一棵树,从1点任意连一边到其他点,使得所有点到1点的 最短距离之和 最小。题解:先求出某点子树到其距离之和,以及某点除子树外所有点到其距离之和。考虑连到某点时,不能确定的就是当前点和1点的这条链上每个点和其子树的归属问题,很明显应该从链中间点切开这样就可以得到最优解。#include using namespace std;#define maxn 210000int n;ve原创 2017-04-09 20:35:57 · 775 阅读 · 0 评论 -
hdu5758 Explorer Bo 树形dp 最小链覆盖
题目:给你一棵树,用最少的链去覆盖这棵树,求链的最小总长度。解析:num为叶子节点数,显然链数是(num+1)/2。如果是偶数,就是叶子节点到叶子节点,如果是奇数,那么就是在奇数-1情况下的树下加一条叶子到其祖先的链。偶数的情况:从一个非叶子节点出发,如果其子节点的叶子节点是偶数,则ans+=2,如果是奇数,ans+=1。奇数的情况:枚举一下那条单链所在的子树。设d原创 2017-03-05 19:19:48 · 1361 阅读 · 0 评论