线段树
文章平均质量分 79
404-unkown
这个作者很懒,什么都没留下…
展开
-
POJ3264--Balanced Lineup(线段树模板题)
题目大意:给出一个数列,求任意区间的区间最值之差。 分析:线段树模板题。原创 2015-07-26 11:39:38 · 316 阅读 · 0 评论 -
爱爬山的小Z
E - 爱爬山的小Z Time Limit: 6000/3000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 从前有一座ACdream王国,这个王国被群山环绕,因此外面的人很少有人知道它的存在。 这个王国里,有一位很喜欢爬山的原创 2015-09-09 15:06:32 · 714 阅读 · 0 评论 -
hdu1166--敌兵布阵(单点更新)
题目大意:中文题啦。。 分析:线段树。单点更新。区间求和。 代码: #include #include #include using namespace std; const int maxn = 50010; int n, sum[4*maxn]; void PushUP(int root) { sum[root] = sum[root*2+1]+sum原创 2015-08-05 23:58:41 · 290 阅读 · 0 评论 -
POJ1151--Atlantis(离散化+扫描线)
题目大意:给出n个矩形,求面积并 分析:线段树+离散化+扫描线。 先以Y轴(横线)建立线段树,当然,这里需要离散化。 然后,用一条直线从左到右扫描,碰到一条矩形竖边的时候,就计算该直线有多长被矩形覆盖,以及被覆盖部分是覆盖了几重。碰到矩形左边,要增加被覆盖的长度,碰到右边,要减少被覆盖的长度随着扫描线的右移动,覆盖面积不断增加。每碰到一条矩形的纵边,覆盖面积就增加( 此时扫描线被矩形原创 2015-08-18 11:06:32 · 301 阅读 · 0 评论 -
POJ3667--Hotel(区间合并)
题目大意:给出一个区间,可以进行两种操作。1、查询是否有长度为X的连续区间,有的话,输出左端点。2、清空某段连续区间 分析:线段树,区间合并。 sum[i]表示当前最长连续区间的长度 lsum[i]表示从当前区间左端点起,最大连续区间的长度 rsum[i]表示从当前区间右端点起,最大连续区间的长度 covered[i]表示是否住了人,0表示没有人,1表示有人,-1表示不需要更新。原创 2015-08-17 23:02:36 · 322 阅读 · 0 评论 -
POJ3468--A Simple Problem with Integers(成段更新)
题目大意:给出一个数列,可以进行两种操作,1、给任意一个区间中的每个数增加x,2、求任意一个区间的区间和 分析:用线段树求解。 这个题目,首先,要考虑节点里存哪些信息。假设节点里只存sum的话,每次更新都要更新到叶子节点,时间复杂度为O(nlogn),而本题的n以及操作次数均为100000,必然会造成TLE。 一个变量不够怎么办?想到的自然就是增加一个变量。原先的sum变量肯定是要保留的,但原创 2015-07-26 15:04:01 · 397 阅读 · 0 评论 -
POJ2528--Mayor's posters(离散化)
题目大意:给出n张海报,按先后顺序贴到瓷砖上去后,求有几张没有被完全覆盖 分析:线段树,成段更新+离散化。 离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012]我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013,+∞]这些值,所以我只需要1000,1990,2000,2012 就够了,将其原创 2015-08-17 13:20:13 · 290 阅读 · 0 评论 -
HDU1698--Just a Hook(成段更新)
题目大意:给出一个区间,更换某一个子区间中的所有值,所有操作结束后,求区间和 分析:线段树,成段更新。需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or 询问到的时候。 另一篇解题报告讲解较为详细http://blog.csdn.net/hhhhhhj123/article/details/47067873 这里的su原创 2015-08-17 10:07:49 · 340 阅读 · 0 评论 -
HDU5023--A Corrupt Mayor's Performance Art(成段替换)
题目大意:给一个区间染色,区间为1到N,共有30种颜色可以挑选,初始时,区间全为第二种颜色。可以进行两种操作,一、给区间[a,b]染色成c;二、查询区间[a,b]有哪些颜色 分析:线段树成段替换。用lazy tag的思想。然后,就是存储颜色的时候,用二进制来存。题目给出30种颜色应该就是暗示要用二进制。 代码: #include #include #include us原创 2015-08-30 11:51:43 · 265 阅读 · 0 评论 -
POJ2828--Buy Tickets(线段树,单点更新)
题目大意:火车站正在排队,有人插队(竟插队成功?),给出插入的位置,和那个人权值,求最后形成的队列。 分析:一直没想出来怎么做,只知道肯定要用树来做,不然绝对超时。然后,搜到一份蛮容易看懂的题解 http://www.cnblogs.com/CheeseZH/archive/2012/04/29/2476134.html 代码: #include #include #inclu原创 2015-08-01 11:29:54 · 377 阅读 · 0 评论 -
POJ1177--Picture(扫描线)
题目大意:给出n个矩形,求周长并 分析:线段树+扫描线。这里给出的是整数,而且范围不大,所以,不需要离散化。 和面积并差不多。不过,还是有点区别的。 numseg[i]数组记录有几条横边需要增加 lbd[i],ubd[i]表示当前区间的上下(也可以理解为左右,因为我是按Y轴建树的,所以自然就是上下啦~)两个端点是否被覆盖 cover[i]表示当前区间被几条边覆盖 len[i]表原创 2015-08-18 22:34:54 · 327 阅读 · 0 评论