
线段树
文章平均质量分 53
disPlayLzy_
梦在前方,路在脚下
展开
-
CF1000F One Occurrence___离线+线段树
题目大意:给出长度为nnn的序列aaa,mmm个询问,每次询问一段区间内仅出现了一次的数,多个则输出任意一个,否则输出0n,m,ai<=5e5n,m,a_i<=5e5n,m,ai<=5e5分析:将询问离线,限制询问左指针考虑将所有数字当前对应的合法右端点区间处理出来每次左端点右移的时候将其对应数字的合法区间更新过程用线段树维护对于线段树上任一节点对应区间,记录其能被覆盖的时候,覆盖他的区间的左端点,并对这个左端点取maxmaxmax,因为如果这个区间不合法,肯定是过了左端原创 2021-11-21 18:35:49 · 496 阅读 · 0 评论 -
Bzoj P1150 [CTSC2007]数据备份Backup___链表+贪心+线段树
题目大意:给出同一个水平线上的nnn个位置XiXiX_i,依次递增, 任意2个位置之间都可以配对,花费为距离差,每个位置最多仅能被配对一次,你要给KKK对位置配对,问KKK对位置的距离差之和最少是多少。2≤n≤1000002≤n≤1000002≤n≤100000 1≤k≤n/21≤k≤n/21≤k≤n/2 0≤Xi≤10000000000≤Xi≤10000000000≤X_i≤100...原创 2018-08-13 11:44:12 · 239 阅读 · 0 评论 -
Jzoj P5908 开荒___树链剖分+树状数组/线段树维护前缀和
题目大意:给出由n−1n-1n−1条无向边连成的nnn个结点的一颗树,根结点为1,每个结点都有一个点权aia_iai,有QQQ次操作,每次操作包括222种:①C,x,yC,x,yC,x,y,将结点xxx的点权修改为yyy②Q,k,c1,c2,...,ckQ,k,c_1,c_2,...,c_kQ,k,c1,c2,...,ck,给出kkk个结点,问这些结点间的路径构成的图包括的点的点权...原创 2018-10-17 16:43:14 · 359 阅读 · 0 评论 -
牛客练习赛28 A,B___枚举,毒瘤线段树
A.生日宴会:链接:https://www.nowcoder.com/acm/contest/200/A来源:牛客网给出N个人的名字与出生年月日,名字为10个字符以内的英文字母,出生年月日为8位数字。有M个询问,每个询问给出一个k与某一天s,输出生日在这天s的年龄第k大的人。保证每一个朋友的出生年月日不同,且出生年月日均在19000101至19991231,保证一定有答案。n&amp;am...原创 2018-10-06 11:54:48 · 304 阅读 · 0 评论 -
Jzoj P100045 好数___思维+线段树
题目大意:我们定义一个非负整数是“好数”,当且仅当它符合以下条件之一:1.这个数是000或111。2.所有小于这个数且与它互质的正整数可以排成一个等差数列。给出NNN个非负整数,然后进行如下三个操作:1.询问区间[L,R][L,R][L,R]有多少个好数2.将区间[L,R][L,R][L,R]内所有数对SSS取余S≤1000000S≤1000000S≤10000003.将第CCC个数...原创 2018-12-18 16:54:30 · 261 阅读 · 0 评论 -
Jzoj P4237 Melancholy___线段树+动态规划
题目大意:nnn个点,每个点有二个关键字(ai,bi)(a_i,b_i)(ai,bi)。QQQ个询问,每个询问给出一组(L,R,K)(L,R,K)(L,R,K)。在所有满足L≤ai≤RL≤a_i≤RL≤ai≤R的点去掉bib_ibi最小的一个点,有多个只去掉其中一个,然后任选KKK个,将对应bib_ibi相乘,累加乘积,不同顺序为不同的选择方案,问所有方案数的对应乘积的和对2322...原创 2019-01-28 20:56:36 · 233 阅读 · 0 评论 -
Jzoj P4238 纪念碑___线段树+扫描线
题目大意:一个长为nnn,宽为mmm的矩形.它由n∗mn* mn∗m个1∗11*11∗1的正方形组成。左下角的正方形的坐标为(1,1)(1,1)(1,1),右上角的正方形的坐标为(n,m)(n, m)(n,m)。有ppp片土地被用来修建建筑,,每一个建筑可以看做是一个左下角为(x1,y1)(x1,y1)(x1,y1),右上角为(x2,y2)(x2,y2)(x2,y2)的矩形。问能在这个n...原创 2019-01-30 08:03:38 · 239 阅读 · 0 评论 -
jzoj P4804 成绩调研___单调性+线段树
题目大意:给出一个长度为nnn的序列aaa,问满足对应数的个数在规定范围内的子序列有多少个。所有ai≤k且≥1a_i≤k且≥1ai≤k且≥1数iii的个数要在[limli,limri][liml_i,limr_i][limli,limri]n,k<=2∗105n,k<=2*10^5n,k<=2∗105分析:预处理出aia_iai的下一个等于ai...原创 2019-06-09 21:05:26 · 161 阅读 · 0 评论 -
Jzoj P4603 颜料大乱斗___线段树+状态压缩
题目大意:nnn个板砖,按序排列以及编号,颜色初始时都为111,有ccc种颜色,也是从111到ccc编号,mmm个询问,每个询问可以支持两种操作:①(C,x,y,z)(C,x,y,z)(C,x,y,z)将第xxx个板砖到第yyy个板砖的颜色变成zzz②(P,x,y)(P,x,y)(P,x,y)问第xxx个板砖到第yyy个板砖有多少种颜色分析:线段树处理,每个节点用一个数去记录一下这个...原创 2019-06-16 14:18:04 · 273 阅读 · 0 评论 -
牛客练习赛47 题解
A DongDong破密码:给定n,m,给出长度为n的01串,每次向后移动一位,移动m-1次,最后求出这n+m-1位每一位的异或值成为密码。给出密码,问长度为n的01串是怎样的。2<=n+m<=10000002<=n+m<=10000002<=n+m<=1000000,保证有解分析:密码第iii位设为aia_iai,原...原创 2019-06-10 20:55:52 · 364 阅读 · 0 评论 -
牛客小白月赛15 A~E 简要题解
A 斑羚飞渡 :有nnn只斑羚,每只斑羚跳跃的最远距离为x[i]x[i]x[i],斑羚在别人的背上起跳的最远距离为y[i]y[i]y[i],峡谷的两岸的距离为sss,问在最好情况下,有几只斑羚可以用别人的背当跳板跳到对岸,但由于斑羚的先天原因(主要是太肥),只能把别人当跳板一次s<=1000000000;x[i],y[i]<=s;不保证x[i]<y[i...原创 2019-06-16 21:43:52 · 396 阅读 · 0 评论 -
牛客小白月赛15 J 小外挂___线段树+容斥
题目大意:给出一个长度为nnn的序列aaa,有QQQ个操作,每个操作有2种选择:区间修改:(1,x,y,z)(1,x,y,z)(1,x,y,z),给区间[x,y][x,y][x,y]加上zzz区间查询:(2,x,y)(2,x,y)(2,x,y),回答∑i=xy(ai∗∑j=i+1yaj)\sum_{i=x}^{y}(a_i*\sum_{j=i+1}^{y}a_j)∑i=xy(ai∗∑...原创 2019-06-17 22:11:26 · 117 阅读 · 0 评论 -
Jzoj P3236 矮人排队___线段树
题目大意:假定矮人们有高度1,2,…,N(每个人高度互不相同)白雪公主发出以下形式命令帮助他们:1 X Y:X和Y位置的矮人互换位置。2 A B:询问高度为A,A+1,…, B的矮人(不一定是按照这个顺序)是否已形成了当前队列的连续子序列。帮助矮人按照白雪公主的指示行动,并回答她的问题。2≤N≤200,000,2≤M≤200,000分析:记录下高度为i的矮人的位置记录下第i位置的...原创 2019-07-20 15:47:43 · 143 阅读 · 0 评论 -
Jzoj P6276 树___线段树+扫描线+lca
题目大意:有一棵n个节点的无根树,给出其中的m对点对<x,y>。问有多少条树上的简单路径<u,v>满足该路径上不存在任何一对给出的点对<x,y>。这里我们认为路径<u,v>和<v,u>是相同的。并且对于题目中给出的点对<x,y>满足x!=y,对于你要计数的路径<u,v>满足u!=v(即单点不算答案)。分析:...原创 2019-08-07 19:49:35 · 237 阅读 · 0 评论 -
CF413E Maze 2D___线段树+矩阵乘法+dp
题目大意:给一个2*n 的地图,有一些X不能走,没有修改,m个询问,问一个点到另一个点的最短距离。n,m<=2e5n,m<=2e5n,m<=2e5分析:在线段树上dp,某个节点iii表示了区间[l,r][l,r][l,r](lll列到rrr列)这里设fi,jf_{i,j}fi,j表示第iii行的左端点到第jjj行的右端点的最短距离(不能走超过lll列...原创 2019-08-15 16:07:53 · 229 阅读 · 0 评论 -
Jzoj P6293 迷宫___线段树+矩阵乘法+dp
题目大意:n∗mn*mn∗m的矩阵,ai,ja_{i,j}ai,j为111则无障碍,否则有障碍,qqq个操作,操作有两种情况:[1,(x,y)][1,(x,y)][1,(x,y)]表示将点(x,y)(x,y)(x,y)取反,有障碍变成无,无变成有[2,(a,b),(x,y)][2,(a,b),(x,y)][2,(a,b),(x,y)],回答从(a,b)(a,b)(a,b)走到(x,y)(...原创 2019-08-15 16:14:29 · 254 阅读 · 0 评论 -
Jzoj P4372 识别子串___后缀数组+线段树
题目大意:有一个长度为LLL的字符串SSS,和SSS中第kkk个字符,定义子串T=S(i..j)T=S(i..j)T=S(i..j)为一个关于kkk的识别子串,当且仅当 1、i<=k<=j。1、i<=k<=j。1、i2、T2、T2、T在SSS中只出现一次。 计算对于一个字符串S,关于S的每一位的最短识别子串分别有多长。L=100000L=100000L=1000...原创 2018-07-14 15:20:27 · 233 阅读 · 0 评论 -
Jzoj P1495 宝石___线段树+扫描线+离散化
题目大意:在一个M∗MM∗MM*M的正方形平面中,给出NNN个宝石的坐标(xi,yi)(xi,yi)(xi,yi),每个宝石的价值为AiAiAi,有一块K∗KK∗KK*K的布,问能覆盖的宝石的最大价值和是多少,宝石在布的边缘也算。1≤m≤50000,1≤n≤50000,1≤k≤100001≤m≤50000,1≤n≤50000,1≤k≤100001≤m≤50000,1≤n≤50000,1≤k...原创 2018-07-07 21:55:37 · 291 阅读 · 0 评论 -
Jzoj P4270 魔道研究___动态开点+权值线段树
题目大意:有若干个可重集合,然后我们从第ii i 个可重集合中拿前iii 大组成一个新的可重集合 SSS。我们的目的是动态维护 SSS 的前 NNN大的和。 给出数NNN,有MMM次操作,每次会插入一个数ppp进入集合ttt中或者在集合ttt中删去原有的一个数ppp,然后回答SSS中的前NNN大的和,不足NNN时直接求当前SSS的总和。1&lt;=t,N,M&lt;=300000,1&l...原创 2018-07-12 20:22:55 · 280 阅读 · 0 评论 -
POJ P2828 Buy Tickets
题目大意: 有N个数值,他们要依次插入,每次输入a[i],b[i]表示b[i]插入到第a[i]个位置,即b[i]占用了第a[i]+1个位置,这个位置以后的人(包括这个位置的人)全都后退一格,求最后的整个队列的位置。 1 ≤ N ≤ 200,000 PS:每一组数据中有多组输入。题解: 线段树: 根据题目可以发现,如果逆着插入每一个插队的人的话,是不会影响他前后的人(包括在他之前插队的人)的原创 2017-05-11 16:29:12 · 540 阅读 · 0 评论 -
POJ P2777 Count Color
题目大意: 在一个有N个点的线段里,给出多个询问与修改(总共有M个),每次给出一个K。 K=“C”,修改为“X,Y,Z”,即区间[X,Y]染色为Z。 K=“P”,询问为“X,Y”,即求区间[X,Y]的颜色总数。 一开始线段为颜色1,颜色总数不超过T。1<=N,M<=100000 1<=T<=30题解: 线段树: tree[i]>0表示第i个节点所代表的区间的颜色。 tree[i]=-1原创 2017-05-03 18:16:42 · 425 阅读 · 0 评论 -
POJ P3368 Frequent values
题目大意: 给一个长度为n的不降序列a1,a2,a3,…,an,有q个询问,每个询问为:i j 询问在序列[i,j]中出现最多的元素。 数据范围:1 <= n, q <= 100000题解: 线段树: 在树的域中: 一个max表示当前区间出现最多的元素的数量。 一个lv表示该区间最左边出现的元素连续相同的数量。 一个rv同上不过表示右边的。 一开始建树的时候,如果当前的区间[l原创 2017-05-02 21:28:10 · 344 阅读 · 0 评论 -
SSL P2648 线段树练习五
题目大意: 有N个格子,分别为1`N,M次修改,每次3个数Z,X,Y, 有2种情况: Z=“M”时,将第X个格子加上Y。 Z=“C”时,统计区间[X,Y]的总和。1≤N,M≤100000 1<=x<=y<=N Z为M或者C题解: 线段树: 1.可以发现,如果修改的话,每一次修改可以表示为在区间[l,l]加上一个数,这时候就用线段树。 2.每一次查询的时候,因为要修改的区间只有1个格子原创 2017-04-21 22:01:30 · 373 阅读 · 0 评论 -
SSL P2647 线段树练习四
题目大意: 在长为N的线段中(这条线段不算),加入M条线段[X,Y],最后查询某个线段[x,y]保证y=x+1。题解: 就是一个线段树+lazy: 1.每次走的时候因为如果你二分到这一个区间就代表你插入的线段一定经过这个区间,这个区间的线段数+1,如果查询到的刚好跟插入的完全覆盖就直接加入lazy中然后退出,等下一次查询这个点带下去。 PS:因为查询的是[l,l+1]所以你二分注意是[l,m原创 2017-04-21 21:30:17 · 423 阅读 · 0 评论 -
SSL P2646 线段树练习题三
题目大意: 给定一条长度为m的线段,有n个操作,每个操作有3个数字x,y,z表示把区间[x,y]染成颜色z,询问染完色之后,这条长度为m的线段一共有几种颜色。规定:线段的颜色可以相同。连续的相同颜色被视作一段。问x轴被分成多少段。数据规模 N <= 10000 M <= 1000000 1 <=x,y<=m题解: 线段树+lazy操作: 线段树: tree[p]=-2表示它所对应的原创 2017-04-19 16:07:02 · 452 阅读 · 0 评论 -
jzoj P1663【AHOI2009】维护序列
题目大意: 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数[t,g]全部乘一个值c; (2)把数列中的一段数[t,g]全部加一个值c; (3)询问数列中的一段数[t,g]的总和,由于答案可能很大,你只需输出这个数模P的值。操作:s t g c 1<=n,m<=100000 1≤P≤1000000000 1≤t≤g≤N,0≤c≤1000000原创 2017-04-18 16:53:20 · 478 阅读 · 0 评论 -
洛谷 PP3373【模板】线段树 2
题目大意: 已知一个N长数列,有M次操作,每次操作有3种: s=1 将某区间[l,r]每一个数加上x s=2 将某区间[l,r]每一个数乘上x s=3 求出某区间[l,r]的总和。对于30%的数据:N<=8,M<=10 对于70%的数据:N<=1000,M<=10000 对于100%的数据:N<=100000,M<=100000 (数据已经过加强^_^)题解: 就是一个线段树+双重l原创 2017-04-18 16:45:33 · 559 阅读 · 0 评论 -
洛谷 P3372【模板】线段树 1
题目大意: 如题,已知一个N个数的数列, 你需要进行M次操作,操作有下面两种: s=1,将某区间每一个数加上x s=2,求出某区间每一个数的和时间限制:1000ms 空间:128M 数据规模: 对于30%的数据:N<=8,M<=10 对于70%的数据:N<=1000,M<=10000 对于100%的数据:N<=100000,M<=100000 数据保证不超过max(int64)/原创 2017-04-15 10:56:34 · 671 阅读 · 0 评论 -
SSL P2645 线段树练习题二
题目大意: N长度的桌子上零散地放着M个不同颜色的盒子,桌子的后方是一堵墙。给出每个箱子的左端跟右端,问从桌子前方可以看到多少个盒子?假设人站得足够远(输入时,由底向上,从左到右)。 1<=n<=100000,1<=m<=100000,保证坐标[l,r]范围为[1,n]. 题解: 线段树: 跟ZJU的那道题一样,不过把数量变成了是否存在。var ans,tree:array [0原创 2017-04-14 11:17:43 · 440 阅读 · 0 评论 -
SSL P2644 线段树练习题一
题目大意: 一个N长度的桌面上有M个箱子,给出每个箱子所占的宽度最左端,最右端[l,r],从桌子的前方射来一束平行光, 把盒子的影子投射到了墙上。求影子的总宽度。数据范围 1<=n<=100000,1<=m<=100000 1<=l<=r<=n题解: 线段树: 1.建一个线段树,如果[a,b]区间在[l,r]区间内,并且[l,r]区间已经被覆盖过的,就不用找了,不然就找,如果[a,b]在原创 2017-04-13 21:16:20 · 449 阅读 · 0 评论 -
ZJU P1610 count the colors
题目大意: 在一条长度0~8000的线段上染色,每次把区间[l,r]染成某种颜色。显然,后面染上去的颜色会覆盖掉之前的颜色,求染色完以后,每种颜色在这条线段上有多少个间断的区间,某种颜色没有。颜色不重复 0<=l<=r<=8000 1<=n,颜色类型 <=8000题解: 线段树: 1.就是一个普通的线段树改一下,建树要用0~8000开始建。 tree[p]=-2表示它所对应的区间[l,r]原创 2017-04-13 17:29:21 · 474 阅读 · 0 评论 -
Poj P3468 A Simple Problem with Integers___分块/树状数组/线段树
题目大意:给出NNN个数AiAiAi,Q个操作Q个操作Q个操作,每次操作有222种方式, ①给出区间[l,r][l,r][l,r]以及一个数xxx,表示给区间[l,r]区间[l,r]区间[l,r]中的每个AiAiAi都加上一个xxx ②给出区间[l,r]区间[l,r]区间[l,r],回答区间[l,r][l,r][l,r]的数的总和1≤N,Q≤1051≤N,Q≤1051≤N,Q≤10^5...原创 2018-06-13 21:02:14 · 382 阅读 · 0 评论 -
Poj P1151 Atlantis___线段树+离散化+扫描线
题目大意:给出一个平面内N个矩形的左下角顶点(x1,y1)及右上角顶点(x2,y2)给出一个平面内N个矩形的左下角顶点(x1,y1)及右上角顶点(x2,y2)给出一个平面内N个矩形的左下角顶点(x1,y1)及右上角顶点(x2,y2) 问它们在平面中占的总面积是多少。问它们在平面中占的总面积是多少。问它们在平面中占的总面积是多少。1≤N≤1001≤N≤1001≤N≤100 0&amp;amp;lt;=x...原创 2018-06-27 16:40:48 · 185 阅读 · 0 评论 -
Poj P2482 Stars in Your Window___线段树+扫描线+离散化+RMQ
题目大意:给出NNN个星星的位置(xi,yi)以及亮度zi(xi,yi)以及亮度zi(xi,yi)以及亮度zi,以及一个W∗HW∗HW*H矩形,问矩形能框住的星星的亮度最大和是多少。 星星在矩形边上是不算的。1&amp;lt;=W,H&amp;lt;=1000000,0&amp;lt;=x,y&amp;lt;2311&amp;lt;=W,H&amp;lt;=1000000,0&amp;l原创 2018-06-27 18:56:20 · 229 阅读 · 0 评论 -
POJ P2182 Lost Cows
题目大意: 有N个数,为1~N,给出N-1个a[i]表示前i个数有多少个数比当前的数要小,因为a[1]=0所以输入从a[2]开始,即输入a[2],a[3]……a[n-1],a[n]。2 <= N <= 8,000题解: 跟这题有点类似: http://blog.youkuaiyun.com/gx_man_vip/article/details/71640465 线段树: 首先我们可以发现从最后一个数开原创 2017-05-11 16:53:40 · 409 阅读 · 0 评论