2013年8月20日
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607题意:前一阵子做的,题意忘记了,大体就是求树的直径,就是树的最长路的长度。思路:树的直径有这么一个算法,从树上任意一点出发,找一条最长路,终点为A,再从A点出来,找一条最长路,终点为B,那么树的直径就是AB的长度。求最长路可用dfs或者spfa来写。#include#include#include#include#includeusing namespace std;const int maxn=100000+5;const int INF=0x3f3f3f3f;//不能随便写,不然后面的mems 阅读全文
posted @ 2013-08-20 21:13 ∑求和 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:一个高h宽w的木板,要往上面贴字条。每条字条的高度都为1,长度为wi,贴的时候字条要尽量往左上方贴。求每条字条贴在哪个位置,比如左上方第一条的位置为1,如果贴不下的话输出-1.思路:想不到这可以用线段树来做。这题有个关键是字条的高度都是确定为1的,所以可以以木板的高h来建一个[1,h]的树。每个叶子节点对应的是位置,保存的是可以使用的长度,初始化为w,如果在某个位置上贴上一个字条的话,相应的叶子节点的值要减去这个wi,完成更新。在查找的时候,二分查找,找的是最大值的位置插入,这里有点不理解。 阅读全文
posted @ 2013-08-20 20:55 ∑求和 阅读(289) 评论(0) 推荐(0) 编辑