View Code #include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>using namespace std;#define N 1001const double pi=acos(-1.0);struct point { int x,y;}node[N];int s[N];int top;int cmp(point a,point b){ if(a.y==b.y) return a.x<b.x; return a.y<b.y;}double ch Read More
posted @ 2011-09-17 21:29
Because Of You
Views(214)
Comments(0)
Diggs(0)
其实不管什么DP,本质思想都是不变的,围绕着最优子结构展开思路,最终记录下最优的结果,所以写好状态转移,处理好边界问题,还是关键手段。状态:dp[i][j]表示以i为根的子树孤立出 j 个点要去掉的最少的边,在树上的动态规划一般都是父结点和子节点的关系,所以在思考状态转移时时应该尽量把父结点的子节点考虑进去分别以不同的点为根进行深搜先要想到我们最后要得到的结果应该是dp[i][p]中的最小值而dp[i][j]是从dp[u][k]和dp[i][j-k]推过来的,u为i的子节点还有就是以i为根和以i的子节点为u根时,dp[u][k]+dp[i][j-k]多加了两次他们之间的边,所以要减去2即dp[ Read More
posted @ 2011-09-17 09:54
Because Of You
Views(242)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号