摘要: hdu 2795 Billboard题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子思路:总共有h个叶节点,表示有h个区间,线段树的一个域表示该区间还能容纳的最大物品,每次找到最大值的位子(先找左边),然后减去L线段树功能:query:区间求最大值的位子(直接把update的操作在query里做了)#include<iostream>#include<algorithm>#define MAXN 222222using namespace std;int p[MAXN*4];int query(int k,int x,int s,int t){ 阅读全文
posted @ 2011-09-22 17:59 枕边梦 阅读(126) 评论(0) 推荐(0) 编辑
摘要: pku 1436 Horizontally Visible Segments题意:在水平坐标系内,有n条垂直线段,问任意三条线段组成一组,问有多少组线段满足,其中任意俩条线段水平可见。水平可见满足:存在一条水平线段将俩条线段连接起来,并且中间不与其他任意线段有交点分析:这是一个染色的问题。首先将线段按横坐标进行排序,接着,从左往右判断当前线段与左边的线段是否水平可见。问题转换:将线段的编号理解为该线段的颜色,那么判断该线段与前面已经插入的线段是否水平可见,只需在查询过程中判断与该区间相交的区间是否存在整个被染成某一种颜色,如果是,则该区间的颜色标号代表的线段与当前线段水平可见。这里要注意查询与 阅读全文
posted @ 2011-09-22 11:46 枕边梦 阅读(278) 评论(0) 推荐(0) 编辑