
数据结构----线段树
Soar-
这个作者很懒,什么都没留下…
展开
-
HDU 1166 敌兵布阵(线段树:单点add,区间求和)
题意: 给你n个整数,4种操作:(1) Add i j,i和j为正整数,表示第i个整数增加j(j不超过30)(2)Sub i j,i和j为正整数,表示第i个整数减少j(j不超过30);(3)Query i j,i和j为正整数,i<=j,表示询问第i到第j个整数的和;(4)End 表示结束,这条命令在每组数据最后出现; 题解: 线段树模板题:单点add,区间求和。 #incl...原创 2018-03-08 21:00:56 · 211 阅读 · 0 评论 -
Transformation HDU - 4578 (线段树,审题很重要)
Yuanfang is puzzled with the question below: There are n integers, a 1, a 2, …, a n. The initial values of them are 0. There are four kinds of operations. Operation 1: Add c to each number between a x...原创 2018-05-29 20:00:45 · 516 阅读 · 2 评论 -
覆盖的面积 HDU - 1255 (线段树)
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从0到10000...原创 2018-05-29 20:00:50 · 279 阅读 · 0 评论 -
最近等对 51Nod - 1571 线段树区间修改 区间最小值
现在有一个序列 a1, a2, ..., ana1, a2, ..., an ,还有m个查询 lj, rj (1 ≤ lj ≤ rj ≤ n)lj, rj (1 ≤ lj ≤ rj ≤ n) 。对于每一个查询,请找出距离最近的两个元素 axax 和 ay (x ≠ y)ay (x ≠ y) ,并且满足以下条件:・ lj ≤ x, y ≤ rj;lj ≤ x, y ≤ rj; ...原创 2018-09-26 16:04:07 · 681 阅读 · 0 评论 -
CodeForces - 1046A (动态开线段树)
CodeForces - 1046A 题意:给一组机器人,每个机器人有x,r,q三个属性。x:坐标,r:视野范围,q:IQ值。每个机器人视野为:[x-r,x+r],如果一对机器人相互可以看到,且它们的智商差距不大于K,那么他们可以聊天。问多少对机器人可以聊天。 题解:先按视野降序排序,后面能看到前面的话,则前面的一定也可以看见后面。然后对于当前机器人来说,看在他前面有几...原创 2018-11-01 17:19:40 · 218 阅读 · 0 评论 -
4301 Can you answer on these queries III 0x40「数据结构进阶」例题(线段树)
4301 Can you answer on these queries III 0x40「数据结构进阶」例题描述给定长度为N的数列A,以及M条指令 (N≤500000, M≤100000),每条指令可能是以下两种之一:“2 x y”,把 A[x] 改成 y。“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 max(x≤l≤r≤y) { ∑(i=l~r) A[i] }。...原创 2018-11-01 17:24:41 · 244 阅读 · 0 评论 -
4302 Interval GCD 0x40「数据结构进阶」例题(线段树,差分)
题意:4302 Interval GCD 0x40「数据结构进阶」例题描述给定一个长度为N的数列A,以及M条指令 (N≤5*10^5, M<=10^5),每条指令可能是以下两种之一:“C l r d”,表示把 A[l],A[l+1],…,A[r] 都加上 d。“Q l r”,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。输入格式第一行两个整数...原创 2018-11-01 17:38:02 · 237 阅读 · 0 评论 -
LCIS HDU - 3308(线段树)
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 increasing subsequence (LCIS) in [a, b].Inp...原创 2018-11-01 17:49:46 · 283 阅读 · 0 评论 -
Rikka with Sequence HDU - 5828(线段树)
Rikka with SequenceHDU - 5828 As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them:Yuta has an array A wit...原创 2018-11-01 20:05:08 · 183 阅读 · 0 评论 -
HDU 1542 Atlantis(线段树:扫描线)
题意:二维平面有n个平行于坐标轴的矩形,现在要求出这些矩形的总面积. 重叠部分只能算一次.分析:线段树的典型扫描线用法. 首先假设有下图两个矩阵,我们如果用扫描线的方法如何计算它们的总面积呢?首先我们将矩形的上下边分为上位边(即y坐标大的那条平行于x轴的边),和下位边(y坐标小的平行于x轴的边).然后我们把所有矩形的上下位边按照他们y坐标从小到大排序,可以得到4条扫描线:又因为上面2个...转载 2018-05-29 20:00:40 · 188 阅读 · 0 评论 -
L3-002. 堆栈
L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“...原创 2018-03-29 20:15:14 · 162 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树:单点set,区间max)
题意: 当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。 当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。 题解: 线段树模板题:单点set,区间max。 #include<iostream>#include<cstdio>#include<cstdlib>...原创 2018-03-08 21:05:55 · 204 阅读 · 0 评论 -
POJ 3468 A Simple Problemwith Integers(线段树:区间add,区间sum)
题意: "C a b c"means adding c to each of Aa, Aa+1, ... , Ab. -10000≤ c ≤ 10000."Q a b" means querying the sum of Aa, Aa+1, ..., Ab.题解: 线段树模板题:区间add,区间sum。 区间add这里有必要说些pushdown函数的理解: 递归是从树根开始往下递归的...原创 2018-03-08 21:25:01 · 170 阅读 · 0 评论 -
HDU 1698 Just a Hook(线段树:区间set,整体区间sum)
题意:题解: 线段树模板题:区间add,区间sum。这里没必要写query函数了,让求全体sum,所以这道题不用线段树也是可以滴~~~暴力呗。既然在线段树专题训练了,就老实线段树~! #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#inc...原创 2018-03-08 21:35:56 · 170 阅读 · 0 评论 -
POJ 2528 Mayor's posters(线段树:区间set,整体查询+离散化)
题意: 为了竞选市长,竞选者在一墙上同一高度进行贴海报为自己拉票。海报覆盖一块连续的区域,后来贴的可以覆盖前面贴的,问到最后一共可以看多多少张海报。整块墙可以看做是一个水平数轴,每张海报就是数轴上的一个区间。 题解: 数据规模为千万级别的,直接建立线段树,内存时间都会超。需要对这些大点的数据进行离散化:缩小数据规模,但是保持各个海报的相对顺序和覆盖关系。 举个栗子: 对于区间[1,...原创 2018-03-08 22:18:46 · 160 阅读 · 0 评论 -
ZOJ 1610 Count the Colors (线段树:区间染色set,整体查询)
题意: 在一条长度为8000的线段上染色,每次把区间[a,b]染成c颜色。后面染的会覆盖前面染的。求染完之后,每个颜色在线段上有多少个间断的区间。 题解: 线段树:区间set,整体查询。区间染色问题,这里所求的是每种颜色在线段上出现的次数(有多少个间断的区间)。 注意: ...原创 2018-03-09 09:58:09 · 221 阅读 · 0 评论 -
POJ 3264 Balanced Lineup(线段树,简单区间query)
题意: 求区间最大值和最小值的差值。 题解: 线段树简单query,修改都没有~~~。 #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#include<string>#inc...原创 2018-03-10 10:19:00 · 146 阅读 · 0 评论 -
HDU 4027 Can you answer these queries? (线段树:区间set变形,区间求和)
题意: 给n个数字,修改操作为:区间[a,b]内的每个值改为他的平方根。询问操作:给出区间[c,d]内的总和。 题解: 线段树:区间set,区间sum。这道题的set不是简单的每个节点都加加减减的问题了,而是每个节点开根号,所有就不能用懒惰标记进行优化了,但是反过来想,由于每个节点都是开方,所以每个节点的数降低的都是非常快的,6-7次就降到1了,降到1,以后就没必要进行再开方了,所...原创 2018-03-10 11:01:36 · 192 阅读 · 0 评论 -
UVALive - 3938 Ray, Pass methe dishes!"(动态最大连续和子序列,线段树区间合并)
题意: 给出一个长度为n的整数序列D,你的任务是对m各询问做出回答。对于询问(a,b),需要找到两个下标x和y,使得a<=x<=y<=b,并且Dx+Dx+1+...+Dy尽量大。如果有多组满足条件的x和y,x应该尽量小。如果还有多解,y应该尽量小。 题解: 蓝书上的线段树练习题,做起来感觉还是不简单地,比起来前面做过的那些题,这种区间合并,多重递归的要复杂的多! ...原创 2018-03-10 17:29:13 · 206 阅读 · 0 评论 -
P1438 无聊的数列(线段树,差分)
P1438 无聊的数列题目背景无聊的YYB总喜欢搞出一些正常人无法搞出的东西。有一天,无聊的YYB想出了一道无聊的题:无聊的数列。。。(K峰:这题不是傻X题吗)题目描述维护一个数列{a[i]},支持两种操作:1、1 L R K D:给出一个长度等于R-L+1的等差数列,首项为K,公差为D,并将它对应加到a[L]~a[R]的每一个数上。即:令a[L]=a[L]+K,a[L+1]=...原创 2018-11-01 21:00:25 · 298 阅读 · 0 评论