
线段树
hill_555
这个作者很懒,什么都没留下…
展开
-
数据结构之线段树
http://dongxicheng.org/structure/segment-tree/ (转自网络)转载 2013-04-25 21:05:20 · 492 阅读 · 0 评论 -
hrbust 1684 最大连续和(区间合并)
题意:对于询问(a,b),需要找到两个下标x和y,使得a分析:应尽量小。如果还有多解y也应尽量小。构造一颗线段树节点保存区间最值,最大前缀和,最大后缀和,及他们对应的下标。对于某一区间最值的更新:1. 左区间的最值2 右区间的最值3 左区间的最大后缀和 + 右区间的最大前缀和对于最大前缀和的更新:1 左区间的最大前缀和2 左区间的和 +原创 2013-05-13 13:00:36 · 614 阅读 · 0 评论 -
hrbust 1524 最大(区间合并)
给包含n个数的初始序列,A[1], A[2], ..., A[n]。给q多个操作,操作如下:1 a b v, 把[a, b] 的值改为v,即A[a] = A[a+1] = ... = A[b] = v。2 a b, 查询[a, b] 之间的相同数的连续和最大值。#include#include#include#includeusing nam原创 2013-05-13 12:36:20 · 785 阅读 · 0 评论 -
hrbust 1752 Page Rank (单点更新 区间最值)
单点更新 区间最值#include#include#includeusing namespace std;#define lson l,m,rt<<1 //函数用左儿子#define rson m+1,r,rt<<1|1 //函数用右儿子#define havemid int m=(l+r)>>1 //取节点中点#define left (rt<原创 2013-05-04 17:02:14 · 588 阅读 · 0 评论 -
poj 4047 Garden 2012金华赛区 (成段更新+区间最值)
题意(题意转自网络):三种操作 0 x y 把x位置的值改成y 1 x y 交换x与y位置的值 2 x y 统计[x,y]中连续k个值的最大值 我们把1-k的和值作为b[1],2-(k+1)的和值作为b[2],以此类推 那么可以建立一棵[1,n-k+1]的线段树 求连续k个和的最大值,退化为求某个区间的最值问题 #include#include#incl原创 2013-06-04 20:01:58 · 696 阅读 · 0 评论 -
HDU 4614 Vases and Flowers(成端更新 求和 + 二分)转自网络
转自http://www.cnblogs.com/GBRgbr/archive/2013/07/25/3214782.html操作1:每次查询区间 [A, N - 1] 中第一个空格的位置,然后在[ A, N - 1 ]中二分右端点的位置。实际放的花的数量是 要求数量 与 剩余空格数量 之间的最小值。如果[ A, N - 1 ]中已经没有空格了,就不能放了。操作2:求和与成转载 2013-07-27 22:35:25 · 414 阅读 · 0 评论 -
hdu4630 No Pain No Game(离线 线段树)
借鉴这里:http://blog.youkuaiyun.com/dongdongzhang_/article/details/9670039有N个数, 是 1~N的一个排列。有M个询问, 每次询问一个区间, 问从这个区间中,取两个数的最大的最大公约数。首先要求出每个数对应的因子存起来。在一个区间内, 如果一个因子出现两次,该因子就肯定是该区间的一个解。 而出现两次并且是最大。 就是该区间的原创 2013-08-04 11:37:54 · 551 阅读 · 0 评论 -
poj1436 Horizontally Visible Segments(区间覆盖+暴力)
借鉴这里:http://www.cnblogs.com/wuyiqi/archive/2012/02/02/2336350.html有一些垂直于X轴的线段,两条线段能互相‘看见’的条件是,两条线段能由一条水平线连接,且这条水平线不能跟其他的所有线段有交点。 问3个线段能互相看见,这个条件下有多少组不同的。先按x坐标进行排序,然后从左到右,一次对每条线段,先进行查询,看左边能看见多少条线段,原创 2013-08-22 17:51:51 · 687 阅读 · 0 评论 -
light oj 1135 (懒惰标记)转自网络
转自:http://www.cnblogs.com/wuyiqi/archive/2012/05/27/2520642.html有n个数,刚开始都为0add i , j 给i,j区间内的数都加1Q i j 询问i、j间能被三整除的数的个数线段树记录三个域对三取余为0的数的个数。。。。。1.。。。。。。。。。。2.。。。。。可以保存在一个数组里面考虑到每次给转载 2013-08-22 23:03:31 · 524 阅读 · 0 评论 -
POJ 2828 Buy Tickets(单点更新 区间求和)
题意: 有N 个人站队,告诉每个人想插队的位置,要求确定最终的站队位置。分析: 越往后插队的人位置越固定,因此可以从后向前插入,每个人插入的位置为从第1 个位置起的第 pos+1 空位置。#include#include#include#includeusing namespace std;#define lson l,m,rt<<1#define rson m+1原创 2013-05-09 13:58:28 · 711 阅读 · 0 评论 -
POJ 2777 Count Color(线段染色 区间更新)
题意: 有一个有 N 个区间木板,存在最多 30 种颜色,一开始木板的颜色都为第一种颜色。 C x y c 将区间[x,y]涂成 c 颜色。 P x y 询问区间[x,y]共有多少种颜色。#include#include#include#includeusing namespace std;#defin原创 2013-05-08 22:37:37 · 669 阅读 · 0 评论 -
HDU 3308 LCIS(区间合并)转自`Wind
转自`Wind题意:Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting from 0) Q A B: output the length of the longest consecutive in转载 2013-05-08 20:40:05 · 596 阅读 · 0 评论 -
hdu 1166 敌兵布阵( 单点增减 , 区间求和)
hdu1166 敌兵布阵线段树功能:update:单点增减 query:区间求和#include#include#includeusing namespace std;#define lson l,m,rt<<1 //函数用左儿子#define rson m+1,r,rt<<1|1 //函数用右儿子#define havemid int m=(l原创 2013-05-03 16:36:39 · 613 阅读 · 0 评论 -
hdu1698 Just a Hook(成段替换 lazy标记)
成段替换 lazy标记题意:成段覆盖染色,求颜色值的总和。#include#include#includeusing namespace std;#define lson l,m,rt<<1 //函数用左儿子#define rson m+1,r,rt<<1|1 //函数用右儿子#define havemid int m=(l+r)>>1 //原创 2013-05-03 20:18:40 · 605 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers(成段增减 区间求和)
成段增减 区间求和#include#include#includeusing namespace std;#define lson l,m,rt<<1 //函数用左儿子#define rson m+1,r,rt<<1|1 //函数用右儿子#define havemid int m=(l+r)>>1 //取节点中点#define left (rt<<1原创 2013-05-03 21:05:23 · 494 阅读 · 0 评论 -
poj3667 Hotel (线段树--区间合并)转自网络
题目大意:有一段长为n的线段,在这条线段上进行操作:1.找出最靠前的长度为l的空线段,并把一个长为l的线段插入在这个地方.2.删除从某点开始长为l的一段线段(有可能并不存在,总之就是把这个区间清空).输出每次插入操作的位置. 一个有 N 个连续房间的旅馆,对 m 次询问对应两种操作。 1 a 询问是不是有连续长度为a的空房间,有的话住进最左边转载 2013-05-02 18:00:08 · 606 阅读 · 0 评论 -
poj3667 Hotel (线段树--区间合并)转自网络【2】
题目大意:有一段长为n的线段,在这条线段上进行操作:1.找出最靠前的长度为l的空线段,并把一个长为l的线段插入在这个地方.2.删除从某点开始长为l的一段线段(有可能并不存在,总之就是把这个区间清空).输出每次插入操作的位置. 一个有 N 个连续房间的旅馆,对 m 次询问对应两种操作。 1 a 询问是不是有连续长度为a的空房间,有的话住进最左边转载 2013-05-04 22:31:30 · 477 阅读 · 0 评论 -
poj2528 Mayor’s posters(区间更新) 转自网络
题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化转自:http://www.notonlysuccess.com/index.php/segment-tree-complete/再照着敲。。我什么时候能自己写呀T T 。。注释自己写的~~ 发现没有注释的代码不是好代码~~#include#include#in转载 2013-05-06 19:54:14 · 496 阅读 · 0 评论 -
hdu1542 Atlantis(矩形面积并)
hdu1542 Atlantis题意:矩形面积并转自:http://www.notonlysuccess.com/index.php/segment-tree-complete/#include#include#include#includeusing namespace std;#define lson l,m,rt<<1转载 2013-05-08 10:37:38 · 637 阅读 · 0 评论 -
hdu2795 Billboard(单点更新)
hdu2795 Billboard题意:h*w的木板,放进一些1*L的物品,求每次放空间能容纳且最上边的位子思路:每次找到最大值的位子,然后减去L思路从hh博客看得 ^-^ http://www.notonlysuccess.com/index.php/segment-tree-complete/#include#include#include#includeusin原创 2013-05-08 12:48:50 · 690 阅读 · 0 评论 -
Codeforces 165D Buses and People(线段树)
转个文章 = =http://codeforces.com/problemset/problem/160/E题意 :一条直线上有很多车站有n辆车 每辆车的信息是 s,f,t 出发的站点,目的地,以及出发的时间,中途可以在其他站停留m个乘客 每个乘客的信息是 start ,to ,tx 出发的站点 要到的站点 出发时间 如果一个乘客能够做上某辆车必须满足s输出时每个转载 2013-08-29 20:59:06 · 716 阅读 · 0 评论