![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 61
AC__dream
道阻且长,行则将至;行而不辍,未来可期!
展开
-
(csp202303-4)星际网络II(线段树)
因为如果不加入,那么离散化后的结果就是1->1,7->2,11->3,15->4,假如我们现在已经把[1,7]和[11,15]这两个区间分配给了编号1,那么在离散后的结果上就相当于区间[1,2]和区间[3,4]都已经赋值1,那么我们下次假如想把区间[1,15]全部分配给1,按照题意理解我们可以发现这个操作是合法的因为实际上区间[8,10]属于未分配地址空间,这个时候我们可以把这些地址分配给编号1,但是我们在离散化后的线段树上查询发现区间[1,4]均已分配给编号1,那么就会返回分配失败的消息。原创 2023-05-24 17:42:39 · 1279 阅读 · 5 评论 -
L3-017 森森快递(线段树+贪心)
而且如果后续有更优答案还可以替换掉该区间,我们可以把n个城市之间的线路看成n-1个点,那么第i个点的初始点权就是第i个点到第i+1个点所能承受的最大权重,然后我们按照排序后的路线进行询问,每次询问当前路线上的点的最小值,然后让该路线上的所有点权都减去这个最小值,答案加上这个最小值即可。,原因很简单,因为小区间如果和其他区间冲突,那么大区间一定冲突,且小区间的区间最小值一定大于等于所包含这个小区间的大区间的区间最小值,所以我们可以考虑。,由于涉及到区间修改和区间查询,所以我们可以用线段树实现。原创 2023-03-16 11:26:22 · 248 阅读 · 0 评论 -
(蓝桥真题)扫描游戏(计算几何+线段树二分)
(蓝桥真题)扫描游戏(计算几何+线段树二分)原创 2023-03-08 12:01:33 · 1344 阅读 · 1 评论 -
(Codeforce484E)Sign on Fence(可持久化线段树+二分)
题目链接:Problem - E - Codeforces题意:一开始给你n个数,然后给你m个询问,询问格式是l,r,w,代表在第l个数和r个数之间任选连续w个数中的最小值的最大值是多少题意有点绕,因为我们每选择连续w个数都会有一个最小值,因为选择的数不同,所以最小值也会不同,我们要求的就是我们所有选择中的最小值的最大值。分析:这道题还是有一定的思维含量的,首先我们可以发现的是答案一定是所给的n个数中的一个,于是我们就可以二分高度,但是由于我们要在区间l到r内进行二分高度,没法直接解决连续这原创 2022-03-30 13:30:18 · 272 阅读 · 0 评论 -
(Daimayuan Online Judge464)数数(可持久化线段树)
题目链接:数数 - 题目 - Daimayuan Online Judge分析:这一看就是一个权值线段树裸题,由于题目中并没有涉及到修改,所以我们可以使最初版本的线段树为一棵空树,也就是说没必要建立最初版本的线段树,直接默认其存在即可,然后我们依次在上一个版本的线段树上进行修改,比如说我们当前要加入一个数a[i],那我们只需要在第i-1个版本的线段树上进行更新,在第a[i]个位置上进行+1操作,每次查询l到r上不超过k的个数时,只需要分别在第r个版本和第l-1个版本的线段树上查询不超过k的数的个数然原创 2022-03-30 09:45:43 · 381 阅读 · 0 评论 -
(LibreOJ - 2432)代理商 Couriers(可持久化线段树)
题目链接:https://loj.ac/p/2432分析:不懂可持久化线段树的小伙伴可以看这里:可持久化线段树_AC__dream的博客-CSDN博客对于这道题目我们是建立可持久化权值线段树的,对于每个新加的节点我们都在上一个版本的线段树上加一条链,这样我们就建成了n个版本的权值线段树,而对于第一棵线段树,由于其是一棵空树,所以我们并不需要真正地建立一棵空树,我们只需要从第一个版本的线段树开始建树即可,每一次建立新的版本的线段树都是在上一个版本的线段树的基础上把a[i]位置上的点的值+1,这原创 2022-03-29 18:41:48 · 85 阅读 · 0 评论 -
树链剖分
先来说一下树链剖分能解决什么样的问题:假如我们有一棵树,树上每个节点都有对应的权值,我们想要修改u到v上所有点的权值,使其加k,这我们应该怎样实现呢?假如在一段区间上进行修改我们知道这个可以用线段树来实现,可是现在这是在树上,无法直接用线段树进行修改,我们就要想办法把树按照某种规则变成一个序列,而这就是树链剖分所要讲述的东西:树链剖分的核心就是把一棵树上所有的节点转化为一个序列,当然树的前序遍历中序遍历以及后序遍历都可以实现这一目的,但是我们今天所讲的是另外一种转换方式,如果我们能把树中任意两个节点原创 2022-03-16 21:33:11 · 1005 阅读 · 0 评论 -
(ACWing246)区间最大公约数(线段树+差分)
题目链接:246. 区间最大公约数 - AcWing题库题意:给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把A[l],A[l+1],…,A[r] 都加上d。 Q l r,表示询问A[l],A[l+1],…,A[r]的最大公约数(GCD)。给出一组样例:输入样例:5 51 3 5 7 9Q 1 5C 1 5 1Q 1 5C 3 3 6Q 2 4输出样例:124这道题的思路还是挺难想的,我们不可能直...原创 2022-03-12 12:25:45 · 410 阅读 · 0 评论 -
P2184 贪婪大陆(线段树或树状数组+思维)
题目链接:贪婪大陆 - 洛谷分析:先说一个容易引起误会的地方,就是同一个地方可以存在多种颜色,这也是本道题目最大的坑点,我一开始就以为后来染色会把之前染过色的地方覆盖掉,那这样就不太好处理了,而这道题目告诉我们对一段区间进行染色,颜色只能是这段区间不存在的,所以这也就给了我们一点启发意义:我们并不需要真正的对染的颜色关注太多,因为我们不可能去遍历哪一种颜色在该区间未出现过,下面给出正解:我们只需要建立两棵线段树,一棵线段树中存储染色区间的起点,另一棵线段树中存储染色区间的终点,然后我们每次对一块原创 2022-03-09 21:42:42 · 285 阅读 · 0 评论 -
树状数组与线段树
例题动态求连续区间和我在之前博客中详细介绍过关于树状数组的内容,里面包含三种常见的关于区间修改和区间查询的方法,下面是博客地址树状数组_AC__dream的博客-CSDN博客下面是代码:#include<cstdio>#include<iostream>#include<cstring>#include<vector>#include<algorithm>#include<map>#include<原创 2022-02-02 21:33:00 · 4 阅读 · 0 评论 -
(HDU - 1255)覆盖的面积(扫描线)
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.Input左下角坐标和右上角坐标输入数据的第一行是一个正整数T(1<=T<=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1<=N<=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左下角坐标和右上角坐标,矩形的上下边和X轴平行,左右边和Y轴平行.坐标的范围从0到100000.注意:本题的输入数据较多,推荐使用scanf读入数据.Out..原创 2022-02-02 11:15:00 · 770 阅读 · 0 评论 -
(POJ - 1177)Picture(扫描线+离散化)
题目链接:Picture - POJ 1177 - Virtual Judge题意:墙上贴着许多形状相同的海报、照片。它们的边都是水平和垂直的。每个矩形图片可能部分或全部的覆盖了其他图片。所有矩形合并后的边长称为周长。编写一个程序计算周长分析:做这道题目之前需要对扫描线离散化基本知识有一定的了解,如果还有不了解扫描线的小伙伴可以看下我之前的一篇介绍扫描线的博客,下面附上博客地址:离散化扫描线_AC__dream的博客-CSDN博客其实求合并后矩形周长和求合并后矩形面积是差不多..原创 2022-02-01 16:30:00 · 785 阅读 · 0 评论 -
离散化扫描线
这是一道需要离散化后的扫描线模板题,但是这道题有一个细节非常重要,所以拿出来单独说一下,扫描线的基本实现原理我就不赘述了,如果还有不明白的小伙伴可以看下我之前的介绍扫描线的博客,下面是地址:油漆面积(扫描线)_AC__dream的博客-CSDN博客这两道题最大的区别就是这道题目的数据范围是1e9,显然不能直接建立这么大的线段树,需要我们先对给出的数据进行离散化,然后再按照正常的扫描线来进行处理但是大家有没有发现扫描线要求我们维护的是线段,而不是一般的点,就比如我们离散化后的点一共有4个,假如我...原创 2022-01-31 16:54:46 · 584 阅读 · 0 评论 -
油漆面积(扫描线)
X星球的一批考古机器人正在一片废墟上考古。该区域的地面坚硬如石、平整如镜。管理人员为方便,建立了标准的直角坐标系。每个机器人都各有特长、身怀绝技。它们感兴趣的内容也不相同。经过各种测量,每个机器人都会报告一个或多个矩形区域,作为优先考古的区域。矩形的表示格式为 (x1,y1,x2,y2),代表矩形的两个对角点坐标。为了醒目,总部要求对所有机器人选中的矩形区域涂黄色油漆。小明并不需要当油漆工,只是他需要计算一下,一共要耗费多少油漆。其实这也不难,只要算出所有矩形覆盖的区域一原创 2022-01-30 11:00:00 · 933 阅读 · 1 评论 -
2020icpc昆明 Stone Games (可持久化权值线段树)
题目链接:M-Stone Games_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) (nowcoder.com)题意:给你n个正整数,有m个询问,每次询问给出一个l,r。问你用区间 [ l , r ] 内的数最小不能表示的正整数是多少(只能从选定区间中选取一些数求和且每个数最多只能选一次)举个例子,假如选定区间内的数是 1 2 3,则容易知道1,2,3,4,5,6这六个数都可以被表示,最小不能表示的正整数就是7.分析:假如我们选定的区间是 [ l , r ],我们已经知道这个原创 2021-11-10 21:23:25 · 297 阅读 · 0 评论 -
HDU - 4348 To the moon(可持久化线段树)
题目链接:To the moon - HDU 4348 - Virtual Judge (ppsucxtt.cn)题意:给你一串序列,每次对他有以下四种操作:1.C l r d:将l到r之间的所有数+d,同时时间+12.Q l r :查询当前时间下l到r的所有数的和3.H l r t:查询时间t下l到r的所有数的和4.B t:将当前时间返回至t分析:这是一个可持久化线段树的区间修改+区间查询的裸题,下面直接附上代码,代码里面有注释这道题目特别需要注意的就是空间,容易超空间原创 2021-11-09 21:52:56 · 153 阅读 · 0 评论 -
可持久化线段树区间修改
学习这篇博客之前需要先了解可持久化线段树是什么,在这附上一篇我之前写的关于可持久化线段树的博客,感兴趣的小伙伴可以看一下。(67条消息) 可持久化线段树_AC__dream的博客-CSDN博客在普通线段树上进行区间修改时我们引入了一个lazy数组,而在可持久化线段树上我们引入了lazy数组标记永久化,在普通线段树上有一个pushdown操作,会用lazy数组来更sum数组的值,而在可持久化线段树上则不会通过lazy数组来改变sum数组的值,在可持久化线段树上面,每一个lazy数组只记录当前区间的值应原创 2021-11-09 21:45:34 · 1110 阅读 · 2 评论 -
可持久化线段树
在讲述可持久化线段树之前,大家需要先知道线段树是什么,如果还有不知道线段树的小伙伴可以看下我之前写的关于线段树的模板,在这附上博客地址:(63条消息) 线段树模板_AC__dream的博客-CSDN博客我们知道线段树支持修改和查询操作,假如我们现在要对某个历史版本的线段树进行操作,我们应该如何达到目的呢?最简单粗暴的方法就是对于每一次修改操作,我们都将原来的线段树先复制一份,再在新建立的线段树上进行操作,这样我们就可以对之前的任何一个版本的线段树进行操作,但是这样显然是不可取的,无论是时间复杂度上还是空原创 2021-11-08 22:18:03 · 568 阅读 · 0 评论 -
2020icpc昆明站 Simone and graph coloring(线段树)
题目链接:L-Simone and graph coloring_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) (nowcoder.com)题意:给定一个 n 的排列,每两个点直接如果存在逆序就连一条边。请你对这 n 个点染色,要求任意一条边的两点颜色不同,且使用的颜色数量最少,输出染色方案。分析:先来拿一组样例来模拟一下吧对于样例 1 34 2来说,1可以染成1,3和4因为前边没有数字与其有连边,所以3和4也可以连1,而2前面有3和4与其均有连边,所以2的颜色不能与3和4.原创 2021-11-06 19:06:07 · 158 阅读 · 0 评论 -
P1276 校门外的树(增强版) (线段树)
题目链接:P1276 校门外的树(增强版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)好久没做线段树了,快要打济南区域赛了,来复习一下线段树*+*题目是中文的,我在这就不说明题意了,注意,题目中问的问题:留下的树苗有多少颗,树苗是树被砍掉后种下的,所以在这我们要开两个线段树,一个用来存储原来的树的状态,另一个要存储树和树苗共存的形态,我们记录每次操作真实种植的树以及真实砍掉的树,什么叫真实种植的树呢?比如我们要对区间【l,r】种树,在这个区间种已经有了x棵树,那我们的真实种树量原创 2021-11-03 18:45:02 · 649 阅读 · 0 评论 -
(HDU - 4553)约会安排(线段树+区间合并)
题目链接:约会安排 - HDU 4553 - Virtual Judge (ppsucxtt.cn)由于题目是中文的,题目大意我就不说了,下面直接说思路:对于屌丝的邀请,我们不能使用任何已经被占用的时间,而对于女神的邀请我们却可以无视屌丝的邀请,这就意味着他们之间的关系是具有优先级的,我们需要建立两棵线段树,一棵维护女神和屌丝的共同占用时间,另一棵只维护女神的占用时间。对于屌丝的邀请,我们只能在屌丝和女生共用的那棵线段树上查找,而对于女神的邀请我们就可以在两棵树上查找,只是我们要先在屌丝和女生共用的原创 2021-09-29 22:53:12 · 182 阅读 · 0 评论 -
HDU - 3974 Assign the task (dfs序+线段树)
题目链接:Assign the task - HDU 3974 - Virtual Judge (ppsucxtt.cn)这道题我觉得还是挺不错的一道题,他将树与线段树连接起来,这道题如果让我们在一段连续的区间上染色,我想大家肯定都不陌生,就是一个线段树的区间更新问题,现在的问题是我们如何把在树上染色变换为在区间上染色。其实方法也不是很难,就是我们跑一边原树,在跑的过程中对其上面的点进行编号,我们在遍历过程中第一次进入某个点就将其编号赋值给以当前节点为根的子树的左区间编号,那右区间编号我们又该如何处原创 2021-09-25 08:57:56 · 206 阅读 · 0 评论 -
HDU - 1540(Tunnel Warfare)二分+线段树
题目链接:Tunnel Warfare - HDU 1540 - Virtual Judge (ppsucxtt.cn)摧毁村庄和重建村庄都比较容易,就是一个线段树的单点修改操作,关键是如何查询与一个村庄直接或间接相关的村庄数量。两个相邻村庄相关需要满足什么条件呢?条件就是他们都没有被摧毁,那么我们就可以类似得到 l,l+1,……,r这些村庄相关的条件就是他们的区间和等于r-l+1,于是我们就知道了如何判断一个区间的村庄是否相关,因此我们就可以二分判断一个村庄左边和右边与它相关的村庄数目,然后加起来减一原创 2021-09-23 13:13:38 · 157 阅读 · 0 评论 -
ZOJ - 1610(Count the Colors)区间覆盖
题目链接:Count the Colors - ZOJ 1610 - Virtual Judge (ppsucxtt.cn)区间长度在1~8000,最后可以直接用线段树单调查找,而之前的操作就是一个普通的线段树区间修改问题,需要注意的是颜色的种类可能是0,未染色的情况也是0,为了对他们加以区分,我们可以让颜色从1开始,最后减掉即可,还有就是未涂色相当于一个间隔,即使该间隔两端是同一颜色也要看成两个区间,就比如20 2的这种情况算是两个区间。下面是代码:#include<cstdio>.原创 2021-09-23 08:43:30 · 194 阅读 · 0 评论 -
(POJ-2528)Mayor‘s posters(区间覆盖+离散化)
题目链接:https://vjudge.net/problem/POJ-2528这道题问我们最后能看到多少张海报,如果正着想会比较麻烦,因为我们不确定当前的海报是否会被之后的海报所掩盖,但是我们可以肯定的是之后的海报一定不会被他之前的海报所掩盖,所以我们就可以倒着来贴海报,如果当前贴的海报能被看见,说明不会被之后的海报所遮挡,至于怎么查询是否被遮挡,这就是线段树的区间查询问题了。由于题目给的海报的边界比较大,数组无法直接存下,我们只需要存储他们的相对大小关系即可,所以我们需要用到离散化。但是离散化时原创 2021-09-22 20:27:55 · 147 阅读 · 0 评论 -
(2021第一场网络赛)Edge of Taixuan(线段树区间覆盖)
题目链接:题目详情 (pintia.cn)给你n个点以及m次操作,对于每次操作会给你一个l和r以及x,代表将l,l+1,……,r连成一个完全图,图中每条边权值都是x,可能会有重边,问我们最多可以删除的边的权值和为多少,使得删边后的图为一个连通图。这道题目显然是要求使得图为连通图的加边的权值和的最小值,然后用总的加边权值减去最后连通图的边权和就可以得到答案。一开始我的思路是kruscal算法,但要加的边数实在是太多了,根本不可能实现,对于操作(l,r,x)我们可以从l到l+1连一条边,再从l+1到原创 2021-09-21 11:03:26 · 210 阅读 · 0 评论 -
(HDU3071)Gcd & Lcm game(线段树+质因子状压)
题目链接:Problem - 3071 (hdu.edu.cn)这道题目是有关两个数与其公约数和公倍数之间的关系的,我在这先介绍一下他们之间的关系:对于两个数a和b,有质因子分解定理可得:a = ( p1^x1 ) * ( p2^x2 ) * ( p3^x3 ) * …… * ( pn^xn )b = ( p1^y1 ) * ( p2^y2 ) * ( p3^y3 ) * …… * ( pn^yn )则 lcm( a , b ) = ( p1^max (x1 , y1) ) * ( p2原创 2021-09-14 21:47:18 · 153 阅读 · 0 评论 -
强制在线带修区间LCM(线段树+质因子状压)
题目链接:信息学奥赛比赛系统 | 强制在线带修区间LCM (qduoj.com)先说点题外话,这个题目困扰了我一天多,刚ac,真的是太爽了,感觉从这里面学到的东西挺多的,所以就来分享一下。题目的意思很明确,就是支持两种操作,一种是单点更改,另一个是区间最小公倍数的查询。看到这道题的第一想法就是直接上线段树模板再加一个lcm函数即可,但是我没想到的是在求最小公倍数的过程中会溢出,我们不可能对其取模完再求最小公倍数,这样结果显然是有问题的。提到这,我先来说一下a,b与他们的最小公倍数和最大公约数之间的关原创 2021-09-14 20:38:54 · 308 阅读 · 0 评论 -
洛谷(P3373)线段树加乘混合模板
题目链接:P3373 【模板】线段树 2 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)这道题目的意思很明确,就是要我们在线完成区间的乘和加运算并支持查询区间和的一个问题。处理这道题目之前一定要对线段树有一定的了解,如果对线段树还不理解的小伙伴可以看下我之前的博客,在这我附上地址:(17条消息) 线段树模板_AC__dream的博客-CSDN博客现在来对这道题目做出分析,我们知道涉及到线段树区间修改问题必然会使用懒标记,知道了线段树区间加法的小伙伴肯定会自然而然地想到使用加法懒标记原创 2021-09-08 16:59:54 · 199 阅读 · 0 评论 -
LCIS(线段树+区间合并)
题目链接:Problem - 3308 (hdu.edu.cn)题意描述:给出n个数。然后给出多个操作,有修改操作和查询操作,查询操作给出区间左右端点,输出区间中最长连续上升子序列的长度。这道题难就难在pushup操作上,其他就是一个正常的线段树操作,我们需要维护一个区间的3个状态量,一个是以左端点开始的最长连续上升子序列的长度,另一个是以右端点结尾的最长连续上升子序列的长度,还有一个是本区间的最长连续上升子序列。更新的话需要注意的一点就是最长连续上升子序列可能分布在两个待合并区间上,所以就需要判断原创 2021-09-06 21:36:41 · 187 阅读 · 0 评论 -
(HDU)Turing Tree(离线+线段树)
题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=3333题目大意:现在给定一个由 N 个数字 A1, A2, ..., AN 和一些 Queries(i, j) (1≤i≤j≤N) 组成的序列。对于每个 Query(i, j),您要计算子序列 Ai, Ai+1, ..., Aj 中不同值的总和。输入第一行是一个整数 T (1 ≤ T ≤ 10),表示下面的测试用例数。对于每种情况,输入格式如下:* 第 1 行:N (1 ≤ N ≤ 30,0原创 2021-08-21 17:42:18 · 129 阅读 · 0 评论 -
(HDU4614)Vases and Flowers(线段树+二分)
题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=4614先给出中文翻译吧:爱丽丝是如此受欢迎,以至于她每天都能收到许多鲜花。她有 N 个花瓶,编号从 0 到 N-1。当她收到一些花时,她会试着把它们放在花瓶里,一花一瓶。她随机选择了花瓶 A 并尝试在花瓶中放入一朵花。如果花瓶里没有花,她会在里面放一朵花,否则她跳过这个花瓶。然后她会尝试放入花瓶 A+1、A+2、...、N-1,直到没有花或她尝试过花瓶 N-1。剩下的花将被丢弃。当然,有时她会打扫花瓶。原创 2021-08-21 16:26:20 · 112 阅读 · 0 评论 -
Count Color(线段树)
题目链接:http://poj.org/problem?id=2777翻译:有一个很长的板子,长L厘米,L是一个正整数,所以我们可以把板子平均分成L段,从左到右用1,2,...L标记,每段1厘米长。现在我们必须给棋盘上色——只有一种颜色的一段。我们可以在棋盘上做以下两种操作:1. "CAB C" 将棋盘从 A 段到 B段涂上颜色 C。2. "PA B" 输出 A 段和 B 段之间绘制的不同颜色的数量。分析:我们要输出一个区间内的颜色数目,我们可以用状压来存储颜色的状态,0代表没有,1代表.原创 2021-08-21 12:28:44 · 255 阅读 · 0 评论 -
Data Structure(线段树+二分)
题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=4217、题意:初始时有一个1~n的序列,需要执行m次操作,每次操作给出一个k,需要将当前序列中第k小的数字删掉,问删除掉的元素总和是多少?分析:如果单单将一个数字删掉,那就比较简单了,就是一个线段树问题,可是如何找到这个数字是关键,找第k小的数字我们可以通过二分来查找始点为1,终点为mid,然后通过不断更新mid来寻找,下面是代码:#include<iostream>#include原创 2021-08-21 11:46:17 · 139 阅读 · 0 评论 -
Petr and Permutations(思维+逆序对)
题目链接:https://codeforces.com/problemset/problem/987/E题目大致意思:给你一个n以及1~n的排列,可以选择两个数交换位置,我们要对原序列打乱顺序,可以是Petr打乱也可以是Um_nik打乱,Petr只能操作3*n次,而Um_nik只能操作7*n+1次,问这个序列是谁打乱的。分析:逆序对有一个性质,就是每次交换两个数都会改变序列逆序对的奇偶性,仔细观察他们两个人的操作次数不难发现,他们两个人的操作次数和为一个奇数,也就是说无论n取何值,他们两人操作次数奇原创 2021-08-21 11:07:58 · 337 阅读 · 0 评论 -
(HDU - 1394)Minimum Inversion Number(逆序对+思维)
题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=1394中文翻译:给定数列 a1, a2, ..., an 的倒数是满足 i < j 和 ai > aj 的对 (ai, aj) 的个数。对于给定的数字序列 a1, a2, ..., an,如果我们将前 m 个数字(m>=0)移动到序列的末尾,我们将获得另一个序列。总共有 n 个这样的序列,如下所示:a1, a2, ..., an-1, an(其中 m = 0 )a2, a3, .原创 2021-08-21 09:44:00 · 81 阅读 · 0 评论 -
Mushroom Gnomes(离散化+线段树)
题目链接:https://codeforces.com/problemset/problem/138/C题目中文翻译:n个电线杆,m棵小草,每个电线杆给位置a[i],高度h[i],倒向左边的概率L[i],倒向右边的概率R[i],倒向左边会覆盖[a[i]-h[i],a[i]-1].倒向右边会覆盖[a[i]+1,a[i]+h[i]],每棵小草都有自己的位置b[j],以及价值z[j],如果小草被一个电线杆或者多个电线杆砸到那么它的价值就为0,问最终所有小草价值的期望和。Input第一行n,m(1&原创 2021-08-21 09:01:40 · 133 阅读 · 0 评论 -
Bash and a Tough Math Puzzle(线段树维护区间公约数)
直接给中文题意吧:给定长度为n的数组a1,a2,…,an。q次操作。操作分为两种:1 l r x,若能在a[l]~a[r]中至多修改一个数的情况下,使得gcd(a[l],a[l+1],…,a[r])=x,输出YES,否则输出NO。注意:我们不需要进行实际的改动。 2 i y,将a[i]修改为y。Input第一行为一个整数n(1 ≤ n ≤ 5*105)。第二行为n个整数,表示数组a(1 ≤ ai≤ 109)。第三行为一个整数q(1 ≤ q ≤ 4*105)。接下来q行,每行一个操作.原创 2021-08-20 20:39:38 · 155 阅读 · 0 评论 -
Infinite Inversions(离散化+线段树求逆序对)
There is an infinite sequence consisting of all positive integers in the increasing order:p = {1, 2, 3, ...}. We performednswapoperations with this sequence. Aswap(a, b)is an operation of swapping the elements of the sequence on positionsaandb. Yo...原创 2021-08-20 11:35:40 · 163 阅读 · 0 评论 -
2299:Ultra-QuickSort(线段树求逆序对)
题目:In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. For the input sequence9 1 0 5原创 2021-08-20 09:50:19 · 145 阅读 · 0 评论