摘要: 题意:现有一棵苹果树,树中每个结点上都有一定数量的苹果,问若从根结点出发,最多只能走K步(每一步都只能从一个结点走到相邻结点),最多能摘多少苹果。分析:定义dp[i][j][0],表示从 i 出发,向下走 j 步,最后回到 i 最多能摘的苹果数,dp[i][j][1]表示从 i 出发,向下走 j 步最后没有回到 i 最多能摘多少苹果。View Code #include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define N 101int n,e,step,w 阅读全文
posted @ 2012-09-20 17:10 BeatLJ 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题意:对一棵树,求出从每个结点出发能到走的最长距离(每个结点最多只能经过一次),将这些距离按排成一个数组得到d[1],d[2],d[3]……d[n] ,在数列的d中求一个最长的区间,使得区间中的最大值与最小值的差不超过m。分析:用2次dfs能求出树的直径,对于树中任意结点,到树的直径的2个端点的距离的较大者即为最长距离。得到数组d后,用2个单调队列分别维护最大与最小值,扫描d数组,同时更新答案。View Code #include <stdio.h>#include <string.h>#include <algorithm>using namespace 阅读全文
posted @ 2012-09-20 16:58 BeatLJ 阅读(694) 评论(0) 推荐(0) 编辑