
线段树/树状数组
文章平均质量分 67
线段树/树状数组
小衣同学
No Saturday , no Sunday , no holiday .
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round 969 (Div. 1) C. Eri and Expanded Sets(线段树维护差分数组gcd+双指针+尺取)
由于gcd只会缩成因子,所以对于所有原创 2024-09-23 03:23:24 · 402 阅读 · 0 评论 -
Codeforces Round 905 (Div. 1) C. Minimum Array(在线+贪心map / 离线+扫描线思想+区间删除)
q(q<=5e5)次操作,每次选择一个区间[l,r],对这个区间加x(-1e9<=x<=1e9)如果若干次操作后,差分的第一个位置是一个单点减,说明是可以替换成更优的答案。去判断第一个差分非0的最左项是正还是负的,是负的说明可以保留,更新答案。每个修改是有时间后效性的,也就是第i时刻的修改,会改[i,q]时间的值。求序列操作前及第[1,q]次操作后,这q+1次对应的序列中,n个位置,q个时刻,扫描线,增序扫n个位置,l加,r+1减。在某个时间区间对应+x,另一个时间区间对应-y,...,原创 2024-01-22 03:54:01 · 526 阅读 · 0 评论 -
Codeforces Round 914 (Div. 2) E. Tree Queries(dfs序/欧拉序性质+树的直径性质+线段树)
若in[a]<in[b]<out[a],说明b在a的子树里,一定有in[a]<in[b]<=out[b]<=out[a]a的dfs序对应[in[a],out[a]],b的区间对应[in[b],out[b]]2. x所在的连通块能到的最远点,一定是x这个连通块的直径的两个端点中的一个。新的树的直径的两个端点,一定是在原来两棵树直径的四个点里选两个点。利用上文提到的树的直径的性质,统一merge合法区间的直径,剩下的区间都是x的可达区间,每个区间对应一个连续的dfs序。原创 2023-12-11 05:25:05 · 743 阅读 · 0 评论 -
Codeforces Round 914 (Div. 2) F. Beautiful Tree(树链剖分/倍增+线段树优化区间建图+拓扑排序)
2^i步的点连着2^(i-1)步的两个点,也是一棵入树、一棵出树,每棵树的点的总数是nlogn。1 a b c,要求点a到点b的简单路径上,最小值位于点c处,保证c在a到b的简单路径上。2 a b c,要求点a到点b的简单路径上,最大值位于点c处,保证c在a到b的简单路径上。n(n原创 2023-12-11 04:00:08 · 698 阅读 · 0 评论 -
Codeforces Round 714 (Div. 2) F. Swapping Problem(线段树二维数点 abs(ai-bi)求和 最多一次交换bi和bj使得和最小)
1. [3,7][0,10],交换3、10,对应从小到大位置关系(ai, bj, aj, bi),交换贡献2*(aj-bj)3. [0,7][3,10],交换0、10,对应从小到大位置关系(bj, ai, aj, bi),交换贡献2*(aj-ai)2. [3,7][0,10],交换0、7,对应从小到大位置关系(bj, ai, bi, aj),交换贡献2*(bi-ai)4. [0,7][3,10],交换3、7,对应从小到大位置关系(ai, bj, bi, aj),交换贡献2*(bi-bj)原创 2023-11-20 03:40:14 · 128 阅读 · 0 评论 -
Codeforces Round 906 (Div. 1) C2. Doremy‘s Drying Plan (Hard Version) (扫描线+线段树/ST表优化dp+背包)
假设这中间的线段有k2条,dp[i][j]就可以从dp[x][j-k2]转移而来,用了k2次机会,使得i不被覆盖。dp[i][j]表示当前考虑到点i,已经用了j次撤销机会,点i必不被线段覆盖时,[1,i]的答案最大是多少。m(m<=2e5)天,第i天让区间[li,ri](1<=li<=ri<=n)的城市都下雨,假设位于点x,然后就只需要考虑左端点位于[x+1,i]之间,且右端点在点i及右侧的线段,转化一下题意,即等价于数轴上点[1,n],m条线段,你可以撤掉最多k条线段,SSRS代码(ST表优化dp)原创 2023-11-06 04:16:33 · 373 阅读 · 0 评论 -
Codeforces Round 890 (Div. 2) E2. PermuTree (hard version) (主席树/树状数组/差分+前缀和)
主席树需要维护lson、rson、num三个变量,num从0变1表示新增,其余非新增,每个空间1e6*20大概2e7,三个6e7,倍增也需要开1e6*20=2e7,3. 回滚时,维护一个数组记录一下操作的点号的序列,退到前一个。2. 查询时,就全局查询数的种类数,实际只需要用到根节点。,询问当前数组内的不同的数的个数(即数的种类数)1. 加数时,按照询问动态开点,在主席树上建一条链。当主席树上建一条新链的时候,在进入叶子结点前,jjleo代码/jiangly代码/官方题解。原创 2023-08-21 01:50:43 · 300 阅读 · 0 评论 -
牛客练习赛108 E.琉焰(非树边性质/线段树分治+可撤销并查集 or LCT)
非树边即为成环边,即并查集合并时已经在同一个集合里的边,维护其条数tot即可。即欧拉回路可以被拆成若干个环,并与刚才选取非树边时所取的环的方式一一对应。对于任意非树边(u,v),把树边u到v上的所有边都选中,即被覆盖1次,任取某个非树边集合S,会导致树边有些被覆盖奇数次,有些被覆盖偶数次,可以取走一个环,使得剩下的边仍然满足存在欧拉回路的条件,仅保留覆盖奇数次的树边,连通块内的点的度数就均为偶数了。由于涉及到类似图的连通块的动态维护,可以在线LCT做。所以,答案即为所有非树边任取非空子集,原创 2023-06-23 03:59:02 · 500 阅读 · 0 评论 -
CCF-CSP认证 202303 500分题解
202303-1 田地丈量(矩阵面积交)202303-2垦田计划(二分)202303-3LDAP(模拟+栈+bitset)202303-4星际网络II(线段树)202303-5 施肥(分治+线段树+树状数组)60分题解(O(n^2+nm)暴力)75分题解(特殊性质)100分题解(分治+线段树+树状数组)原创 2023-03-27 01:29:23 · 11284 阅读 · 18 评论 -
牛客挑战赛65 D.233求min(二维偏序 树状数组/cdq分治)
牛客挑战赛65 D.233求min(思维/二分 二维偏序 树状数组/cdq分治)原创 2022-12-10 13:27:04 · 679 阅读 · 0 评论 -
IOI2022 D2T1 数字电路(计数&概率/组合数学+线段树区间翻转)
IOI2022 D2T1 数字电路(计数&概率/组合数学+线段树区间翻转)原创 2022-11-06 22:01:37 · 1104 阅读 · 0 评论 -
Codeforces Global Round 23 F. Kazaee(随机化哈希+线段树)
Codeforces Global Round 23 F. Kazaee(随机化哈希+线段树)原创 2022-10-30 23:11:24 · 622 阅读 · 0 评论 -
Educational Codeforces Round 137 (Rated for Div. 2) F. Intersection and Union(动态dp(线段树+矩阵+dp) /组合数学)
Educational Codeforces Round 137 (Rated for Div. 2) F. Intersection and Union(动态dp(线段树+矩阵+dp) /组合数学)原创 2022-10-31 02:55:47 · 394 阅读 · 0 评论 -
2022 百度之星程序设计大赛复赛 D.子序列2(动态dp/线段树维护矩阵)
2022 百度之星程序设计大赛复赛 D.子序列2(动态dp/线段树维护矩阵)原创 2022-09-20 21:59:50 · 1166 阅读 · 0 评论 -
Codeforces Round #813 (Div. 2) E. LCM Sum (lcm 离线+树状数组)
lcm常用性质+树状数组常用套路原创 2022-08-16 10:16:05 · 595 阅读 · 0 评论 -
Shopee Code League 2022 - Qualification Round P3.Connecting The Numbers(线段树/二分图判定, to be discussed)
题目t(t<=50)组样例,每次给定一个长度为2*n的序列,且每个1到n的数恰好出现两次,圆环上等距离分布着1到2*n这2*n个点,数值相同的点要么在环内连边,要么在环外连边,问给定的序列是否可以连边,使得边两两不交,如果可以输出yes,否则输出no自己的一点想法官方给出的题解,已经被找出了反例1 4 1 2 3 2 4 3 1 4队友请教了一下@泛白老哥,得出了一个主席树的做法自己又仔细想了想,感觉这个主席树,好像不太有必要所以,根据这个主席树,手撸了.原创 2022-03-20 01:39:23 · 861 阅读 · 1 评论 -
Deltix Round, Autumn 2021 (rated, Div. 1 + Div. 2) E. William The Oblivious(线段树+子序列 线段树维护转移矩阵)
题目长度为n(n<=1e5)的仅由abc三种字母组成的串,q(q<=1e5)次操作,每次给出两个参数pos x(x属于a、b、c三种字母中的一种),表示把pos位置的字母改成x,每次改完之后,都需要输出把整个串改成不包含abc子序列的最小改动次数思路来源cf评论区两张图2019 南昌网络赛(The 2019 Asia Nanchang)B、C(线段树维护转移矩阵)、D(母函数+分治FFT)、E、G、H(分块优化矩阵块速幂)、I题待补、D题待补、A题待补_Co.原创 2021-12-12 23:08:19 · 393 阅读 · 0 评论 -
2020ICPC·小米 网络选拔赛第一场 E.Phone Network(线段树二分/单调性)
题目给定一个长为n(n<=2e5)的数组a[],再给一个阈值m(m<=n),保证1<=ai<=m,且[1,m]的数每个都至少在数组中出现一次对于每个i属于[1,m],询问区间内 值域的并集包含了[1,i]的所有数的 最短的连续区间是多长思路来源官方题解https://ac.nowcoder.com/acm/contest/view-submission?submissionId=45328431北大逆十字队代码题解官方题解和北大逆十字队20min.原创 2020-10-30 15:21:57 · 330 阅读 · 0 评论 -
2018 China Collegiate Programming Contest Final (CCPC-Final 2018) B.Balance of the Force(线段树)
题目T(T<=20)组样例,每组样例给定n(n<=2e5)个人,第i个人要么加入光明阵营,获得li(1<=li<=1e9)的值,要么加入黑暗阵营,获得di(1<=di<=1e9)的值,m(0<=m<=2e5)个互斥关系,每次给定x,y,表示x和y不能在同一阵营中,如果不能满足互斥关系,输出IMPOSSIBLE否则希望n个人中能力值最大值减能力值最小值的差最小,输出这个最小的差题解感觉自己就tm是乱搞的,也不知道这题正解是啥原创 2020-10-29 16:32:45 · 248 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Nanjing 2019 I.Washing clothes(李超树 极值点)
题目n(n<=1e6)个人洗衣服,第i个人的到达时间为ti(0<=ti<=1e9),有一台洗衣机,同时只能洗一件衣服,花费的时间为x,每个人都可以手洗衣服,多个人可以同时手洗衣服,花费的时间为y,对于x∈[1,y]的每个x,输出能让n个人都能洗完衣服所需花费的最小时间多组样例,但保证sumN<=1e6,sumy<=1e6思路来源https://blog.csdn.net/qq_41997978/article/details/104638475?ut原创 2020-10-15 12:49:07 · 200 阅读 · 0 评论 -
hdu6521 Party(线段树二分+思维)
题目n(n<=5e5)个人,对应数轴上[1,n]的区间m(m<=5e5)次操作,第i轮给出li,ri,会让[li,ri]内区间的人两两认识,特别地,如果两个人在第[1,i-1]轮就已经认识了,则忽略对于第i次,回答多少pair是这一轮认识的思路来源https://qleonardo.blog.csdn.net/article/details/89409912题解考虑对于第x个人,包含x的区间,可以使x认识的人的左右端点分别往左拓和往右拓,显然对应一个连续的区间原创 2020-10-14 11:47:41 · 224 阅读 · 0 评论 -
hdu6183 Color it(动态开点线段树/cdq分治)
题目二维平面,读入若干行,每一行对应一次操作,操作分4种:0:清掉平面内所有点1 x y c(1<=x<=1e6,1<=y<=1e6,0<=c<=50):在(x,y)加入一个颜色为c的点,点重合时同时存在2 x y1 y2(1<=x<=1e6,1<=y1<=y2<=1e6):统计以(1,y1)左下角以(x,y2)右上角这个矩形内点的颜色数3:退出程序数据保证只有最后一行是3操作,连续的1或2操作只有最多15W个(即每逢原创 2020-09-30 16:30:36 · 185 阅读 · 0 评论 -
牛客练习赛69 E.子串(树状数组/线段树/扫描线思想/分治)
题目给出一个长为n(n<=1e6)的排列p[],规定一个区间 [l,r](l<=r) 是 fair 的,当且仅当区间中最小值等于 l 且最大值等于 r求 fair 区间的个数。思路来源https://ac.nowcoder.com/acm/contest/view-submission?submissionId=44985124题解考虑[4,1,2,3],区间重排之后最小值是1,最大值是4,所以(1,4)这个值对答案有贡献,换言之,[1,4]中1是最小值,[1,.原创 2020-09-29 16:49:41 · 393 阅读 · 0 评论 -
Codeforces Round #665 (Div. 2) E.Divide Square(线段树 扫描线)
题目1e6*1e6的正方形,四个顶点分别是(0,0)(0,1e6)(1e6,0)(1e6,1e6)矩形内横着画n(n<=1e5)条线段,竖着画m(m<=1e5)条线段,保证每条线段的一个端点落在正方形一条边上,保证没有两条线段在同一条直线上求线段把正方形分成了多少个区域思路来源anodiebird代码题解可以把这个区域过程看成是切蛋糕划分区域的过程,答案是最开始的一块区域+截断的横线数量+截断的竖线数量+横竖线的交点数量交点数量用扫描线统计,这里采用把横向原创 2020-08-23 23:20:53 · 248 阅读 · 0 评论 -
Codeforces Round #665 (Div. 2) F.Reverse and Swap(线段树 区间翻转 子树交换)
题目思路来源zbw代码、willingox代码https://blog.csdn.net/Code92007/article/details/82710068感觉有翻转单点的影子题解1题解2代码1代码2原创 2020-08-23 23:34:13 · 263 阅读 · 0 评论 -
Educational Codeforces Round 92 F.Bicolored Segments / 2020 计蒜之道 预赛 第一场 D.染色(困难) (线段树+dp)
题目n(n<=2e5)个区间,第i个区间[li,ri](1<=li<=ri<=1e9),第i个区间要么是被颜色1染色,要么是被颜色2染色,现在要选一些区间,选中的区间中, 不同颜色的区间不能相交,问最多能选多少个区间思路来源zlc大佬:“dp,从左往右看答案一定是1111222211112222这样交叉着一坨一坨的对吧,需要满足相邻的1那坨和2那坨没有交叉”所以,线段树就是维护前面那一坨的右端点r,与后面那一坨的左端点l分开即可题解线段树dp[i].x原创 2020-07-30 21:49:59 · 405 阅读 · 3 评论 -
牛客练习赛56 D.小翔和泰拉瑞亚/Codeforces Round #535 (Div. 3).Array and Segments (Hard version)(线段树/扫描线思想)
题目小翔爱玩泰拉瑞亚 。一天,他碰到了一幅地图。这幅地图可以分为n列,第i列的高度为Hi,他认为这个地图不好看,决定对它进行改造。小翔又学会了m个魔法,实施第i个魔法可以使地图的第Li列到第Ri列每一列的高度减少Wi,每个魔法只能实施一次,魔法的区间可能相交或包含。小翔认为,一幅地图中最高的一列与最低的一列的高度差越大,这幅地图就越美观。小翔可以选择m个魔法中的任意一些魔法来实施,使得地图尽量美观。但是他不知道该如何选择魔法,于是他找到了你。请你求出所有可行方案中,高度差的.原创 2020-07-11 19:01:55 · 326 阅读 · 0 评论 -
2019西北大学集训队选拔赛(重现赛)D.温暖的签到题(线段树)
题目给你一个长度为n(n<=1e5)的序列,初始为1,2,3...n,对其进行m(m<=1e5)次操作。操作有两种:1 l r,表示将区间[l,r]用[1,2...r-l+1]覆盖2 l r,查询[l,r]的区间和思路来源7个月前不会的题今天一看突然会了题解区间覆盖,标记记录"覆盖的等差数列的左端点cov",即操作1的左端点l对于一个覆盖的区间[l,r],根据区间左右端点到cov的位移判断出这应该是一段[1+l-cov,1+r-cov]的等差数列,然后原创 2020-07-11 14:49:20 · 338 阅读 · 0 评论 -
Educational Codeforces Round 90 (Rated for Div. 2) G.Pawns(线段树/Hall定理)
题目n列n行(n<=2e5)的棋盘,第k(1<=k<=n)列是特殊列,以下有m(m<=2e5)个操作,每次给出一个兵(x,y)(x列y行),如果棋盘这个位置有兵,就拿掉原位置的兵,否则把它放入这个位置兵的行走规则是可以从(x,y)走向(x,y+1),(x+1,y+1),(x-1,y+1),即以走向下一行为代价,保持列不变或走向相邻列对于每次操作后,都询问一次,若令当前棋盘上的所有兵都走到第k列上,棋盘最少需要扩充多少行思路来源https://www原创 2020-07-04 13:04:15 · 243 阅读 · 0 评论 -
Codeforces Round #654 (Div. 2) F.Raging Thunder(线段树/区间合并)
题目一个长为n(n<=5e5)的仅由'>"和'<'构成的字符串,代表球桌上在1到n的位置,有n个转换器,此外,球桌上还有0到n,共n+1个球洞,假设此时球碰到i位置的转换器,对于i位置的<转换器,①如果i=1,球会落到0位置球洞②如果i-1位置是<转换器,球会滚到i-1的转换器③如果i-1位置是>转换器,球会落到i-1位置球洞对于i位置的>转换器,①如果i=n,球会落到n位置球洞②如果i+1位置是>转换器,球会滚到i+1原创 2020-07-04 01:14:46 · 567 阅读 · 0 评论 -
ZOJ4009 And Another Data Structure Problem(线段树+循环节)
题目数据范围如上,两种操作,一种区间立方和,一种区间求和对99971取模思路来源https://blog.csdn.net/qq_31759205/article/details/79520745题解思维新奇.jpg打表,发现这玩意有循环节,我怎么可能知道对任意数x,x*x*x%99971在48次时出现循环节于是,线段树多开一维,同时维护当前这个区间如果是第0到47次被立方时的答案类似标记永久化(?)/树上前缀和的东西,也不需要下放标记,每次修改的时候找到完整区间原创 2020-06-16 01:30:14 · 214 阅读 · 0 评论 -
BZOJ2957 楼房重建(分块/线段树上二分)
题目这些事件发生在一个二维平面上,待建的楼房的横坐标在1到N(1<=N<=1e5)之间。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。施工队的建造总共进行了M(1<=M<=1e5)...原创 2020-02-21 12:36:37 · 385 阅读 · 0 评论 -
hdu4578 Transformation(线段树/区间加区间乘区间赋值区间立方和)
题意样例最多10组,每组给你一个长度为n(n<=1e5)的数组,初始为0,以下m(m<=1e5)次操作,操作分4种1 x y c 区间+c2 x y c 区间*c3 x y c 区间赋值为c前三种操作,保证c<=100004 x y c(1<=c<=3) 询问区间c次方和模10007的值思路来源校赛题解维护区间立方和、平方和...原创 2019-12-14 00:45:57 · 440 阅读 · 0 评论 -
牛客练习赛53 E.老瞎眼 pk 小鲜肉(离线+BIT单点修改)
题目老瞎眼有一个长度为 n 的数组 a,为了为难小鲜肉,他准备了 Q 次询问,每次给出 一个区间[L,R],他让小鲜肉寻 找一对 l,r 使L<=l<=r<=R 且 a[l]^a[l+1]^a[l+2]...^a[r]=0,老瞎眼只让他回答r-l+1 最小是多少,若没有符合条件的 l,r 输出”-1”。1<=n,Q<=500000,0<=a[i]&l...原创 2019-11-26 20:15:36 · 247 阅读 · 0 评论 -
洛谷P3157 [CQOI2011]动态逆序对(树套树/BIT+权值线段树)
题目n(n<=1e5)个数的数组a[],对应1-n的一个排列,m(m<=5e4)次操作,每次先询问此时的逆序对数,再删去一个值思路来源https://blog.csdn.net/sslz_fsy/article/details/86772265题解计删去的ai所在位置pos,考虑逆序对的减少减少的是pos前面大于ai的数量,和pos后面小于ai的数量BI...原创 2019-06-13 21:37:22 · 277 阅读 · 0 评论 -
牛客小白月赛12 F-华华开始学信息学(树状数组+平方分割思想)
题目思路来源https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40397065题解平方分割思想,如果D很大,我们暴力BIT单点修改就是D很小的话,就把它塞进D的桶里,查询的时候查[x,y]有多少数是D的倍数即可由于有D个桶,所以每次查询得遍历所有桶,O(D)总复杂度,令D取,均摊...原创 2019-03-10 19:16:04 · 265 阅读 · 0 评论 -
2019 南昌网络赛(The 2019 Asia Nanchang)B、C(线段树维护转移矩阵)、D(母函数+分治FFT)、E、G、H(分块优化矩阵块速幂)、I题待补、D题待补、A题待补
赛中通过B. Fire-Fighting Hero(最短路/多源bfs 签到)题意比较多源bfs的最短路和单源最短路哪个大题解可以对多源建个虚点,跑两次单源最短路#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include...原创 2019-09-11 09:28:01 · 1138 阅读 · 0 评论 -
FZU2105 Digits Count(线段树位运算 区间或/区间异或/区间与)
题目n(n<=1e5/1e6)个数,第i个数ai,ai范围[1,1e6]m(m<=5e4/1e5)次操作,操作分四种①区间异或x ②区间或x ③区间与x ④询问区间和要参与操作的数x,范围[1,1e6]题解打一个标记即可,只是分类讨论会显得有点繁琐按位压线段树,只有&0、|1和^1会起作用标记分-1 0 1 2四种 分别代表没打标记 置零 置一 ...原创 2019-09-09 19:57:40 · 610 阅读 · 0 评论 -
Codeforces Round #393 (Div. 2)(8VC Venture Cup Div. 2) E.Nikita and stack(线段树/后缀和+区间最值)
题目有个小迷糊对栈进行了操作,但他现在回想起来第p[i]次操作干了什么,是入栈还是出栈特别地,如果对空栈pop,什么也不会发生但是并不是按顺序回想起来的,问按他回想的前i次对栈进行操作,栈顶的元素是什么思路来源https://www.cnblogs.com/quintessence/p/6392073.html题解本来是线段树维护后缀和,push对p[i]点+1...原创 2019-05-04 15:19:43 · 251 阅读 · 0 评论 -
hdu1542 Atlantis(线段树-扫描线求面积并)
题目给定n(n<=100)个矩形,每个矩形x1,y1,x2,y2四个参数,代表左下角的点(x1,y1)和右上角的点(x2,y2)求所有矩形的面积并思路来源https://www.cnblogs.com/KonjakJuruo/p/6024266.html(扫描线具体流程)https://blog.csdn.net/stay_accept/article/details...原创 2019-05-01 22:28:56 · 289 阅读 · 0 评论