![](https://img-blog.csdnimg.cn/20200815100603108.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
普通线段树
文章平均质量分 92
常规线段树习题总结
Gene_INNOCENT
Wait for the sunrise!
展开
-
HDU 1394 求逆序数(线段树)
题意: 给一个初始数列,不断将数列第一个数移到最后,求下述n个数列中逆序数最少是多少?思路: 题目数据水,可以暴力n^2卡过去 正经做法:用线段树求逆序数,求解过程 注意:本题给出的n个数为0-n-1的数,每个数不重复然后求出初始序列的逆序数之后,就可以观察数列结构,给出递推公式:sum =sum +(比这个数大的数)-(比...原创 2018-05-26 10:55:01 · 218 阅读 · 0 评论 -
【2018宁夏邀请赛 L】Continuous Intervals【线段树】
题意:nnn 个数的一个序列,对于一个连续区间,将这个区间内的数排序,相邻数字差距小于等于 111,则这个区间符合条件。问这个序列中有多少个符合条件的连续区间。(1≤n≤106)(1\leq n\leq 10^6)(1≤n≤106)思路:这是一个区间计数问题,即询问一个序列中符合条件的区间个数。通常此类问题的思考方向是确定一个左端点,求有多少个符合条件的右端点。或者确定一个右端点,求有多少...原创 2019-08-31 17:48:39 · 1546 阅读 · 1 评论 -
【 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛】1002.array【主席树】
题意:给定一个长度为 nnn 的序列,序列中每个数都不相同,数字范围在 1 n1~n1 n 之间,一共有 mmm 次操作。操作 111,(1,pos)(1,pos)(1,pos),令 apos=apos+107a_{pos}=a_{pos}+10^7apos=apos+107。操作 222,(2,r,k)(2,r,k)(2,r,k),求出大于等于 kkk 且不等于 a1&...原创 2019-08-23 20:35:38 · 276 阅读 · 0 评论 -
【2019牛客暑期多校训练营(第八场)E】Explorer【线段树分治维护图连通】
题意:nnn 个点,mmm 条边,每条边有一个区间 [li,ri][l_i,r_i][li,ri],表示只有体重在这个范围内的人才能通过这条边,问有多少种不同的体重可以从起点到达终点。(1≤n,m≤105,1≤li,ri≤109)(1\leq n,m\leq 10^5,1\leq l_i,r_i\leq 10^9)(1≤n,m≤105,1≤li,ri≤109)思路:这应该是一类经典...原创 2019-08-14 21:10:27 · 178 阅读 · 0 评论 -
【2019牛客暑期多校训练营(第七场)E】Find the median【权值线段树】
题意:初始序列为空。一共 NNN 次操作,每次操作往序列中加入区间 [L,R][L,R][L,R] 中的所有数。每次操作结束后询问当前序列中的中位数。(1≤N≤4∗105,1≤L≤R≤109)(1\leq N\leq 4*10^5,1\leq L\leq R\leq 10^9)(1≤N≤4∗105,1≤L≤R≤109)思路:涉及到了中位数,因此不难想到权值线段树。但是每次是对一个区间 +1...原创 2019-08-14 18:27:40 · 1339 阅读 · 1 评论 -
李超树算法完整总结
李超树概述一、用途维护一段区间的多条直线,维护区间 [L,R][L,R][L,R] 中的三条直线。支持单点查询多条直线最大/小值。如查询 midmidmid 处的多条直线的纵坐标最大值。支持区间查询直线最大/小值。如查询区间 [L,R][L,R][L,R] 中各直线最值的最大值。二、具体解析李超树在线段树每个节点中维护了一条直线。直线用斜截式表示,y=kx+by=kx+by=k...原创 2019-08-02 11:58:16 · 3364 阅读 · 0 评论 -
【Codeforces Round #546 (Div. 2) E】Nastya Hasn't Written a Legend【线段树】
题意:给定长度为 nnn 的数组 aaa 和长度为 n−1n-1n−1 的数组 kkk。支持两种操作,操作 111,aia_iai 增加 xxx,且如果 ai+1<ai+kia_{i+1}<a_i+k_iai+1<ai+ki,ai+1=ai+kia_{i+1}=a_i+k_iai+1=ai+ki,循环往后。操作 222,查询区间 [L,R][L,R...原创 2019-08-03 19:56:39 · 1262 阅读 · 0 评论 -
【2019南昌邀请赛网络赛 B Greedy HOUHOU & BZOJ 2957 楼房重建】线段树+二分
BZOJ 2957 楼房重建题意:一个长度为nnn的序列,有mmm个操作。操作分为两类,① 令a[x] = y ② 查询全局的递增序列,能选就选。(1≤n,m≤105)(1\leq n,m\leq 10^5)(1≤n,m≤105)思路:线段树节点维护maxnmaxnmaxn与sumsumsum,sumsumsum表示该节点对应区间的递增序列值之和,maxnmaxnmaxn表示该节点对应区间节点...原创 2019-04-24 11:06:02 · 423 阅读 · 0 评论 -
【BZOJ 3531 Sdoi2014】旅行【动态开点线段树+树链剖分】
题意:现在有 nnn 个城市,构成了一颗树。每个城市都有自己信仰的宗教,以及城市评级。现在一共有四种操作:①①① 某个城市改信 ccc 教②②② 某个城市的评级调整为 www③③③ x−&amp;gt;yx-&amp;gt;yx−&gt;y 路径上所有与 xxx 信仰相同的城市的评级之和④④④ x−&amp;gt;yx-&amp;gt;yx−&gt;y 路径上所有与 xxx 信仰相同的城...原创 2019-03-16 13:50:50 · 215 阅读 · 0 评论 -
【Codeforces Round #291 (Div. 2) D】R2D2 and Droid Army【线段树+二分】
题意: 有n个机器人,每个机器人有m个属性。现在你有m个武器,使用第i个武器,可以对所有机器人的第i个属性值造成-1的伤害,当机器人的所有属性值均为0时,机器人被破坏。你一共可以使用武器k次,求被破坏的机器人连续的最长长度是多少。m <= 5。 思路: 比较容易想到,对于每个起点i,二分终点,即被破坏的机器人最长连续距离。 至于二分判断方面,...原创 2019-02-16 17:31:51 · 159 阅读 · 0 评论 -
【线段树】Interval GCD【线段树维护gcd】
题意: 长度为N的数列A,以及M条指令(N、M <= 2*1e5),每条指令可能是以下两种之一: 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)。 对于每个询问,输出一个整数表示答案。...原创 2018-10-31 10:22:31 · 858 阅读 · 4 评论 -
【POJ 2482】【扫描线问题】Stars in Your Window【包星星问题】
题意: 给出一大堆星星的坐标,给出每个星星的亮度。然后给出一个矩形,要求用这个矩形包住的星星的亮度最大。注意:如果星星在矩形边界上,则不计算这个星星的亮度。【ps:本题的description是一封极美的情书,文采非常棒,强推!】 思路: 我们来思考一下,一个矩形的位置是不是由这个矩形右上角这个点所决定的,所以我们可以把考虑矩形的位置改为考虑右上角这个点所在...原创 2018-10-20 17:25:04 · 187 阅读 · 0 评论 -
【扫描线】【POJ-1177】Picture【周长并】
题意: 给一堆矩阵,求出所有矩阵拼起来,求出矩阵并起来的总周长。思路: 其实与面积并差不多,就是求ans的时候,ans += abs(last-t[1].len),每次插入一根线段,对答案的贡献值为使得t[1].len增加或减少的长度。 可以自己画个图模拟一下,就可以明白这么做的原因。代码:#include <cstd...原创 2018-10-20 14:29:03 · 234 阅读 · 11 评论 -
【BZOJ 1503】郁闷的出纳员【权值线段树】
前期知识: 权值线段树本质 —— 每个节点存取的是一个区间内的信息,即在 [l,r] 这个区间内的信息,而普通的线段树可能是维护区间内的最大值,sum和之类的信息。 当数据范围比较大,但是数据个数不多的时候,可以使用离散化实现权值线段树。 权值线段树可用于求取全局第 k 大之类的信息。 题意: 建立员工档案,要求支持动态加...原创 2018-10-17 19:14:55 · 505 阅读 · 0 评论 -
【POJ-2452】Sticks Problem【二分右端点+线段树】
题意: 给定一个数组序列,找到一段区间 [ i , j ],使得区间a[i] < a[k] < a[j],( k 是 [ i , j ] 中任意一个数),此处注意 a[i] 是区间唯一最小值,a[j] 是区间唯一最大值。 求 j-i 最大值。(n <= 50000) 思路: 确定左端点,然后找到一个最长区间,使得该区间的最小值为左...原创 2018-10-10 20:07:46 · 273 阅读 · 0 评论 -
【HDU1255】【扫描线 —— 矩形面积交】覆盖的面积
题意: 本题是扫描线的典型应用,就是求矩形的面积交。与本题相关的题就是HDU1542,求矩形面积并。 思路: 我们先来讨论一下扫描线的本质。扫描线算法其实就是先将所有的 y 坐标进行离散化,然后用所有离散的点建立一棵线段树,这棵线段树的每一个节点的左右端点就代表空间中 y 坐标上的一段区间。 然后我们再将每一个矩形的左右两条边抽出来,进行排序,然后...原创 2018-10-19 20:41:34 · 456 阅读 · 0 评论 -
【Gym - 101234A】Hacker Cups and Balls【线段树 + 二分答案】
题意: 给定一个数组,一共有n个元素,分别为1-n中所有数,给定m次操作,每次给出 ( l , r ) ,表示对区间 ( l , r ) 内的元素进行升序排序或者降序排序,操作结束之后询问数组最中间的那个数是多少。 思路: 一开始看到这道题的时候,毫无思路......是赛后补的题。 题目思路就是对最中间那个数进行二分,二分答案来求解。在...原创 2018-09-03 21:09:40 · 556 阅读 · 0 评论 -
POJ 3667 Hotel (线段树区间合并)
题意: 有一个旅馆,对于入住的人,输出连续房间的第一个房号,使房号尽量靠前;对于离开的人,将他们的房间重新标记为没有人住。思路: 对于这个问题,需要维护三个信息,①区间内最大连续空房间 ②区间内紧靠左端点的最大连续空房间③区间内紧靠右端点的最大连续空房间 采用延迟标记,用loop来标记房间状态,loop == 1:没人住 loop == 2:...原创 2018-05-26 11:02:20 · 164 阅读 · 0 评论 -
【BZOJ-1095】[ZJOI2007] Hide 捉迷藏【线段树维护树直径】
题意:nnn 个点的一棵树,每个点初始为 000,支持两种操作,第一种操作 C xC \ xC x,表示将第 xxx 个点取反,即 111 变 000,000 变 111。第二种操作为 GGG,表示查询两个相距最远的 000 点距离。(1≤n≤105,1≤m≤5∗105)(1\leq n\leq 10^5,1\leq m\leq 5*10^5)(1≤n≤105,1≤m≤5∗1...原创 2019-09-22 20:45:16 · 1463 阅读 · 0 评论