树形dp
ThreeWater-
这个作者很懒,什么都没留下…
展开
-
hdu1520 树形dp
子节点和父节点只能选一个,价值最大是多少#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N=6005; int n,a[N]; struct node { int nxt,to; }edge[N<<1]; int head[N],cnt; int dp[N][2]原创 2016-10-21 15:30:51 · 234 阅读 · 0 评论 -
hdu2196 (树的直径)
求树上每个点能到达的最远距离,刚开始,就想找到树上最远的两个个点,那么树上的每一个点能到达的最远距离就是到这两个点的距离的大的那一个,(后来发现树上最远的两个个点的距离就叫树的直径)。 写了三个dfs,先求出树上最远的距离,肯定是直径的一个端点,然后再以这端点为根,再跑一次dfs,求出另一个端点,顺便记录到每个点的距离,找出另一个端点,为根跑一遍dfs,记录出另一个端点到每个点的距离,取较大值即可原创 2016-10-21 22:40:55 · 310 阅读 · 0 评论 -
Codeforces 23E (大数乘法+树形dp)
把一颗树分成几个联通块后的大小乘积最大。 dp[i][j]表示第i个节点下面有j-1个儿子的乘积最大值。import java.util.*; import java.io.*; import java.math.*; public class Main { static BigInteger dp[][]=new BigInteger[705][705];//表示第i个节点下面有j-1个原创 2016-10-17 12:30:49 · 558 阅读 · 0 评论