
线段树
文章平均质量分 83
麻袋君
这个作者很懒,什么都没留下…
展开
-
hdu 3397 Sequence operation
题目大意: 给你一个0,1序列,有如下几种操作: 0 【a,b】:将a,b范围内都设置成0; 1 【a,b】:将a,b范围内都设置成1; 2 【a,b】:将a,b范围内0都设置成1,1设置成0,即进行区间异或; 3 【a,b】:求a,b范围内1的个数; 4 【a,b】:求a,b范围内最大的连续的1的个数; 解题思路: 区间修改,区间合并,2个懒惰标记,区间求和,这道题涉及的范围很广原创 2015-03-14 14:17:54 · 448 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare
题目大意: 给你一段连续村庄,D x表示破坏第x个村庄,Q x为包括x在内的连续的好的村庄有多少,R 为修复最后一个破坏的村庄; 解题思路: 这是一道线段树类的的题目,包括区间的合并和单点更新,对于重建最后一个被破坏的村庄,我们可以用一个stack来存储破坏掉的村庄。 难点在于对连续好的村庄统计,我们在统计的时候要判断 1:如果x在当前结点的左孩子范围内 如果它在右连续区间,则要不仅要原创 2015-03-14 13:15:39 · 354 阅读 · 0 评论 -
hdu 2871 Memory Control
题目大意: 给你一段内存,现在有如下的几种操作 1:Reset,把内存全部释放 2:New x 申请一段内存,并输出内存的起始位置 3:Free X释放包含x在内的内存块,并输出它的起始位置和结束位置; 4:Get X得到第x个内存块的起始位置 解题思路: 对于申请和释放内存的时候,我们可以同过线段树的区间修改轻松的实现,对于边界信息虽然我们可以通过添加信息维护,但是统计第几个的时候原创 2015-03-13 17:30:07 · 445 阅读 · 0 评论 -
poj 3667 hotel
题目大意: 有一段连续房间,有俩种操作,操作1是寻找最左边的连续的x个空房间的初始位置,操作2是将区间a,b的房间全部都置空; 解题思路: 线段树区间修改和合并,用到了一个懒惰标记cover; ls从左边第一个开始,连续的空的房间 rs右边最后一个房间结束连续的空的房间 ms为这个区间剩余的最大的连续的空的房间 len为区间的长度; lc,rc为区间的边界 #include #i原创 2015-03-13 00:23:08 · 371 阅读 · 0 评论 -
hdu 2795 Billboard
题目大意: 给你一个h*w的广告板,和n块1*wi的广告,尽可能的把每一块广告放在广告牌的左上方,最上方为第一层,请输出每一块广告牌的位置。 解题思路: 将广告旋转,h变为w,w变为h,则数据从10^9降到200000,建立一棵线段树,以旋转后的w范围建立树即1-h,查询的过程中尽量往左孩子查找即可。 #include #include #include using namespace s原创 2015-03-11 10:46:00 · 352 阅读 · 0 评论 -
hdu 1828 picture
题目大意: 求矩形并周长; 解题思路: 没啥思路,看着网上大牛写的,顺便练了下代码; #include #include #include using namespace std; #define maxn 100010 #define L(a) (a)<<1 #define R(a) (a)<<1|1 struct Line{ int l,r,h,s; Line(){} Lin原创 2015-03-18 00:14:42 · 404 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number
题目大意: 给定一个序列,每次将第一个数放在序列最后,产生一个新的序列,求所有序列中逆序对最少是多少; 解题思路: 首先说一下逆序对,通俗的说,在一个序列中,如果ia[j]那么这就是一个逆序对; 假设num为序列的第一个数,它的逆序对为sum个,即序列后边比它小的数有sum个,则比它大的数有n-sum-1个,将num放在序列的尾端,原来比它大的成了逆序对,而比它小的则成了顺序,因此在这个过原创 2015-03-10 18:31:42 · 367 阅读 · 0 评论 -
hdu 1698 just a hook
题目大意: 给定一个区间,默认区间的每一个数的权值为1,不断的修改区间的某一范围,求最终的区间权值和 解题思路: 线段树区间修改。 #include #include #include using namespace std; #define maxn 100010 #define L(a) (a)<<1 #define R(a) (a)<<1|1 struct Node{ in原创 2015-03-10 18:24:30 · 353 阅读 · 0 评论 -
hdu 1542 Atlantis
题目大意: 求矩形的并面积; 解题思路: 从下往上扫描,实际上就是把整个图案分成了一横块,一横块的,矩形的左边的边,标记为1,右边的边标记为-1,用于对线段长度的处理,每次查询的实际上上是横块的横边长度。因为范围略大,对横坐标要进行离散,需要注意的时候线段树中【l,r】并不是表示表示pos【l】,pos【r】的长度,是pos【l】,pos【r+1】的长度,因为离散后的建立的线段树的一个点是一原创 2015-03-16 17:01:51 · 358 阅读 · 0 评论 -
hdu 1754 I hate it
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 43002 Accepted Submission(s): 16994 Problem Description 很多学校流行一种比较的习惯。原创 2015-03-10 00:24:20 · 339 阅读 · 0 评论 -
hdu 1166 敌兵布阵
敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都原创 2015-03-09 23:36:07 · 471 阅读 · 0 评论 -
hdu 3308 LCIS
题目大意: 给你一个序列和和一些操作,操作有U和Q俩种,U为把某一点a的值更新为b,Q为询问区间【a,b】的最长连续递增序列; 解题思路: 第一次区间合并的线段树,没有思路,看着网上大牛博客写的。 len为区间的长度,lc,rc左右区间的边界,fir,sec左右边界的值,ls,rs,ms分别为以左边第一个数字为起始的最长连续递增序列,以右边最后一个数字为结束的最长连续递增序列,ms为区间最原创 2015-03-11 23:13:23 · 427 阅读 · 0 评论