随笔分类 -  数据结构---线段树

摘要:题意:有N个学生M条操作,0<N<=200000,0<M<5000,要么查询某区间内学生的最高分,要么更改某学生的成绩。 分析:原理和线段树点修改求和类似。 阅读全文
posted @ 2018-05-24 17:10 Somnuspoppy 阅读(191) 评论(0) 推荐(0)
摘要:题意:求区间最大值-最小值。 分析: 1、线段树 2、RMQ Sparse-Table算法,预处理时间O(nlogn),查询O(1)。 阅读全文
posted @ 2017-08-03 11:23 Somnuspoppy 阅读(141) 评论(0) 推荐(0)
摘要:题意:区间add,区间求和。 阅读全文
posted @ 2017-08-02 19:04 Somnuspoppy 阅读(134) 评论(0) 推荐(0)
摘要:题意:给定一个序列,求分别将前m个数移到序列最后所得到的序列中,最小的逆序数。 分析:m范围为1~n,可得n个序列,求n个序列中最小的逆序数。 1、将序列从头到尾扫一遍,用query求每个数字之前有多少个大于该数字的数,方法如下。 (1)将已经扫过的数字所对应的位置标记,通过query求该数字之后有 阅读全文
posted @ 2017-08-02 17:23 Somnuspoppy 阅读(173) 评论(0) 推荐(0)
摘要:题意:n个棍子,初始值全为1,给定Q个区间,分别赋值,问n个棍子的总值。 分析:lazy标记主要体现在update上。 当l <= L && R <= r时,该结点的子结点值不再更新,取而代之的是给该结点一个lazy值,以记录下来该结点的子结点并没有更新。 当赋值的区间落在子结点上时,才将lazy标 阅读全文
posted @ 2017-08-02 14:48 Somnuspoppy 阅读(231) 评论(0) 推荐(0)
摘要:题意: 1、Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) 2、Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); 3、Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数; 4、End 表示结束,这条命令在每组数据最后 阅读全文
posted @ 2017-08-02 11:55 Somnuspoppy 阅读(193) 评论(0) 推荐(0)
摘要:题意:有n个1*wi的传单要放在一个h*w的宣传板上,在尽量往上放的基础上尽量往左放,问每个传单放在第几行,若无法放上,则输出-1。 分析:二分,用线段树维护,若前半区间所有行的最大值大于等于wi,那么继续在前半区间搜索,否则搜索后半区间。 阅读全文
posted @ 2017-07-09 20:41 Somnuspoppy 阅读(167) 评论(0) 推荐(0)
摘要:题意:已知n个矩阵(下标从1开始),求下标x~y区间矩阵的乘积。最多m次询问,n ( 1 <= n <= 30,000) and m ( 1 <= m <= 30,000)。 分析: 1、矩阵初始化为单位矩阵,因为要做乘积,E*A=A。 2、因为输出矩阵的所有值范围在0~r-1,所以要对r取余。 阅读全文
posted @ 2017-01-30 22:52 Somnuspoppy 阅读(238) 评论(0) 推荐(0)
摘要:题意:对于一个长度为n的序列进行m次操作(1 ≤ n ≤ 100000, 1 ≤ m ≤ 100000),有以下三种操作: 分析:线段树 阅读全文
posted @ 2016-11-26 18:36 Somnuspoppy 阅读(359) 评论(0) 推荐(0)