随笔分类 -  数据结构

摘要:题目大意:给定一行n个正整数a[1]..a[n]。m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。 因为gcd满足交换律和结合律,所以用线段树维护区间上的gcd值即可。 阅读全文
posted @ 2018-04-20 20:22 headboy2002 阅读(244) 评论(0) 推荐(0)
摘要:题目大意:给出一段序列,每次查询一段区间,求区间最大值。 ST表:设原序列为A,定义F[i][k]为A[i][2k-1]的最大值。有递归式:F[i][k]=max(F[i][k-1], F[i+2k-1][k-1])。设置F时,外层循环k,内部循环i。查询时,令k为2^k不超过r-l+1的最大k,返 阅读全文
posted @ 2018-03-31 15:21 headboy2002 阅读(180) 评论(0) 推荐(0)
摘要:题目大意 已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和操作3: 格式: 3 x z 表示将以x为根节点 阅读全文
posted @ 2018-03-26 21:34 headboy2002 阅读(267) 评论(0) 推荐(0)
摘要:【两种delta值叠加,通过特殊设定lazy标记的运算来实现】 阅读全文
posted @ 2018-03-25 21:05 headboy2002 阅读(177) 评论(0) 推荐(0)
摘要:题目大意 给定n个点以及每个点的权值,要你处理接下来的m个操作。操作有4种。操作从0到3编号。点从1到n编号。0.询问从x到y的路径上的点的权值的xor和。保证x到y是联通的。1.代表连接x到y,若x到y已经联通则无需连接。2.后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在。3 阅读全文
posted @ 2018-03-25 12:57 headboy2002 阅读(232) 评论(0) 推荐(0)
摘要:题目大意 维护一个数据结构,满足以下操作: 引子 维护一个二叉搜索树,其中每一个节点满足左节点的key小于该节点的key小于等于右节点的key。由于本题要求排名,所以节点中要有值Size表示子树的大小。由于本题要求若有多个相同的数,输出最小的排名,因此每个节点还要维护一个值count表示节点的数值重 阅读全文
posted @ 2018-03-24 01:20 headboy2002 阅读(214) 评论(0) 推荐(0)
摘要:题目大意 给出一段序列,一个长度一定的窗口从左到右滑动。求窗口滑动到每个位置时窗口内数字的最大值、最小值各是多少。n<=1e6。 总体思路 遇到这种对一个沿着一个方向滑动的区间求最值问题,可以运用单调队列优化。以求最小值为例。对整个序列构造一队列维护元素的下标,供多个窗口重复使用。设窗口左右端点各为 阅读全文
posted @ 2018-02-28 17:13 headboy2002 阅读(160) 评论(0) 推荐(0)
摘要:【通过枚举的顺序,限定查询的范围,继而求和:用树状数组。】 阅读全文
posted @ 2018-02-14 12:00 headboy2002 阅读(195) 评论(0) 推荐(0)
摘要:关键词:树状数组 二维树状数组C中,X树状数组维护一个Y树状数组,C[x][y]表示点(1,1)至点(x,y)是否被翻转过。先操作X数组,再操作每个X所维护的Y数组。 注意:反转(x1,y1):(x2,y2)时,反转了(x2,y2)的前缀和(x1-1,y1-1)的前缀就行了?不!还要把(x1-1,y 阅读全文
posted @ 2018-02-13 09:47 headboy2002 阅读(229) 评论(0) 推荐(0)
摘要:树状数组实际上是个数组,维护一个区间,支持查询区间的前缀和,以及修改单点的值。 定义lowbit(x)=x&(-x),表示将x的二进制数只保留从右往左数的第一个1后的数字。 设树状数组为C,规定C[i]维护区间[i-lowbit(i)+1,i]的数字和。因此,要访问C[i]维护的区间的前一个区间,则 阅读全文
posted @ 2018-02-13 08:49 headboy2002 阅读(138) 评论(0) 推荐(0)
摘要:关键词:线段树 二维线段树维护一个 维护一个X线段的线段树,每个X节点维护一个 维护一个Y线段的线段树。 注意,以下代码没有PushDownX。因为如果要这么做,PushDownX时,由于当前X节点的子节点可能存在标记,而标记不能叠加,导致每次PushDownX时都要把子节点PushDownX一次。 阅读全文
posted @ 2018-02-12 09:32 headboy2002 阅读(590) 评论(0) 推荐(0)
摘要:关键字:线段树 可持久化 线段树:当版本(即对应的原序列的区间[1,r])一定时,每个节点的left,right下标为值域,值为其对应的原序列区间[1,r]中元素大小在值域中的元素个数。 可持久化:新版本(对应原序列[1,r])在旧版本(对应原序列[1,r-1])上建立,从树根向树叶构造,在旧版本的 阅读全文
posted @ 2018-02-10 10:56 headboy2002 阅读(187) 评论(0) 推荐(0)