![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
Are_you_ready
这个作者很懒,什么都没留下…
展开
-
线段树(区间最大公约数&区间修改&差分)
题目:https://www.acwing.com/problem/content/247/题意:给定一个长度为 N 的数列 A,以及 M 条指令,总共两种情况:1、C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。2、Q l r,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。对于每个询问输出一个值N≤500000,M≤100000, 1≤A[i]≤1018, |d|≤1018,不会超longlong题解:最大公约数支持交换律和结合律,所以我可以原创 2021-08-09 10:17:42 · 294 阅读 · 0 评论 -
线段树(求最大连续子段和)
题目:https://www.acwing.com/problem/content/246/题意:给一个长度为n序列,两个操作1、单点修改2、查询区间最大连续子段和m个操作N≤500000,M≤100000,−1000≤A[i]≤1000#include <bits/stdc++.h>//#define int long long#define pb push_back#define pii pair<int, int>#define mpr make_pair原创 2021-08-07 21:25:47 · 318 阅读 · 0 评论 -
线段树(单点修改&求区间最大值)
题目:https://www.acwing.com/problem/content/1277/题意:给定一个正整数数列 a1,a2,…,an,每一个数都在 0∼p−1 之间。可以对这列数进行两种操作:1、添加操作:向序列后添加一个数,序列长度变成 n+1;2、询问操作:询问这个序列中最后 L 个数中最大的数是多少。程序运行的最开始,整数序列为空。一共要对整数序列进行 m 次操作。输入格式:第一行有两个正整数 m,p,意义如题目描述;接下来 m 行,每一行表示一个操作。如果该行的内容是 Q原创 2021-08-07 15:37:58 · 358 阅读 · 0 评论 -
Vases and Flowers HDU - 4614(线段树 +懒惰标记+二分查找)
题目有nn个花瓶,标号00 ~ n−1。mn−1。m个操作,题目大意:‘1AF′‘1AF′,表示从AA位置开始插FF朵花,遇到有花的花瓶跳过。到最后一个花瓶都还有花剩余,丢弃剩下的花。‘2AB′‘2AB′,表示将区间[A,B][A,B]内的花瓶全部清空。(A≤B)(A≤B)对于每个11操作,输出第一个和最后一个插花的位置,如果一朵花都插不了,输出‘Can not put any one.’;对于每个22操作,输出区间[A,B][A,B]内被清空的花瓶的数量。二分查找的时候,是查找的那个区间内空瓶原创 2020-11-06 21:38:26 · 143 阅读 · 0 评论 -
覆盖的面积 HDU - 1255(线段树-矩形的交面积)
题目给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.Input输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从0到100000.注意:本题的输入数据较多,推荐使用scanf读入数据.Output对于每组测试数据,请计算出被原创 2020-10-31 21:21:32 · 197 阅读 · 0 评论 -
Atlantis HDU - 1542(线段树-扫描线-面积(不算重复))
讲下重点和我对这题的理解,虽然不是很透彻…首先我们可以把x轴按x的值切分,我们要用y轴值进行快速更新.首先这个更新可以用线段树,存tr数组的话考虑4个变量l,r表示当前节点的左右区间,然后用cnt和len分别表示这个矩形在这个区域叠加了几次以及这个区域所占长度,显然因为y是浮点数,不适合我们直接建树,我们需要离散化一下.我们拿build把节点建树,然后我们modify进行更新,更新时候有个pushup操作.等会单独讲,modify就是进行区间更新,和普通的线段树没什么两样,但是这个是区间更新,但是这个是扫描翻译 2020-10-30 21:40:27 · 170 阅读 · 0 评论 -
Tunnel Warfare HDU - 1540 (1 0 改变,求与某个点连续的1有多少个)
在抗日战争期间,华北平原广大地区进行了大规模的隧道战。 一般来说,通过隧道连接的村庄排成一列。 除了两端,每个村庄都与两个相邻的村庄直接相连。入侵者经常对一些村庄发动袭击并摧毁其中的部分隧道。 八路军指挥官要求最新的隧道和村庄连接状态。 如果某些村庄严重隔离,必须立即恢复连接!Input输入的第一行包含两个正整数n和m(n,m≤50,000),表示村庄和事件的数量。 接下来的m行中的每一行描述一个事件。以下所示的不同格式描述了三种不同的事件:D x:第x个村庄被毁。Q x:指挥官询问第x.转载 2020-10-24 17:02:07 · 197 阅读 · 0 评论 -
Balanced Lineup POJ - 3264(线段-求某区间的最大值与最小值的差)
一片绿地的N(1≤N≤50000)颗树排成一排,在一个美好的下午,园艺师傅接到任务对这N棵树修剪,园艺师傅已经知道这N颗树的高度H(1≤H≤1000000)。园艺师傅街道的任务有Q(1≤Q≤200000)个小任务,对于每一个小任务,园艺师傅都要知道特定区间最高的树和最矮的树的高度差。园艺师傅不会算法,这个任务对他有些难,你能帮助他吗?Input第一行为N(1≤N≤50000)和Q(1≤Q≤200000);.从第2行到第N+1行,每行一个数字, 表示第i棵树的高度(1≤height≤1000000);原创 2020-10-23 21:04:11 · 341 阅读 · 0 评论 -
Mayor‘s posters POJ - 2528(区间更新+离散化(标记颜色))
Mayor’s posters POJ - 2528The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has finally decided to build an electoral原创 2020-08-03 11:42:23 · 93 阅读 · 0 评论 -
Just a Hook HDU - 1698(成段替换,区间求和)
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.Now Pudge wants to do some operations on the hook.Let us number the原创 2020-07-30 10:28:53 · 167 阅读 · 0 评论 -
A Simple Problem with Integers POJ - 3468(add增加模式改变一整段的值)
A Simple Problem with Integers POJ - 3468You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the sum of numbers i原创 2020-07-29 11:09:36 · 84 阅读 · 0 评论 -
I Hate It HDU - 1754(单点更新)(区间最大值)
I Hate It HDU - 1754很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。学生ID编号分别从1编到N。第二原创 2020-07-27 17:14:25 · 104 阅读 · 0 评论 -
敌兵布阵 HDU - 1166
敌兵布阵 HDU - 1166C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问原创 2020-07-27 15:54:26 · 235 阅读 · 0 评论