
数据结构--线段树
文章平均质量分 65
XYZgoforit
这个作者很懒,什么都没留下…
展开
-
线段树模板整理
综述线段树的原理:将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为少量特定的子区间,通过对这些少量子区间的修改或者统计,来实现快速对[L,R]的修改或者统计。 作用:对编号连续的一些点的区间信息进行修改或者统计操作 主要操作:区间查询、点更新、区间更新 时间复杂度:修改和统计的复杂度都是O(log(N))由原理可以看出线段树维护的信息必须满足区间加法原创 2017-04-10 21:12:31 · 7992 阅读 · 1 评论 -
HDU 1166 敌兵布阵 (线段树点更新模板题)
题目链接HDU1166题目大意有N个(N<=50000)工兵营地,有N个工兵营地开始时有ai个人(1<=ai<=50)。有以下四种命令: (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个营地的总人数;原创 2017-04-10 21:33:15 · 241 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (线段树区间更新模板题)
题目链接POJ3468题目大意给N个数,Q个操作(1 ≤ N,Q ≤ 100000) 有两种操作: 1.”C a b c”:Aa, Aa+1, … , Ab都加c 2.”Q a b”:求Aa, Aa+1, … , Ab的和分析线段树区间更新模板题。代码#include <iostream>#include <cstring>#include <string>#define LL long原创 2017-04-10 21:39:10 · 325 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树 区间更新+离散化 经典染色问题)
题目链接POJ2528题目大意给定一条数轴,长度为10710^7,然后在数轴上的某些区间染色,第i次对区间染色为i,共染色n(n≤\le10510^5)次。给出每次染色的区间,问最后能看见多少种颜色. 分析这是我写的第一道离散化的题啊!虽然以前知道有这种技巧,但一直没有亲手写过题,通过这道题掌握了离散化的思想以及用STL的实现离散化的方法。 1.这道题为什么要离散化? 这道题数轴的长度原创 2017-04-14 00:52:29 · 567 阅读 · 0 评论 -
POJ 2828 Buy Tickets (线段树 单点更新-查找第k大元素)
题目链接POJ2828题目大意火车站有n(n≤\le200000)个人要排队,它们是按顺序到达,到达后要插队,现在告诉你每个人每次插队排在当前队伍第几个人的后面以及它们的权值,输出最终队伍的权值序列。分析按照题意,每个人插队时的位置都是相对那个时候的队伍状态而言的,因此是动态变化,但是经过分析我们可以发现,最后一个人的位置是一定确定的,因此我们可以倒序考虑每个人的插队,依次确定每个人的位置。举个栗子原创 2017-04-15 00:31:13 · 454 阅读 · 0 评论 -
POJ 2777 Count Color (线段树 区间覆盖染色问题)
题目链接POJ2777题目大意有一条长度为n(n≤\le10510^5)的数轴,有T(T≤\le30)种颜色,有m个操作(m≤\le10510^5),操作有以下两种:C a b c:把a与中间染成c色P a b:查询a与b中间有几种颜色数轴的初始颜色为1注意:a有可能大于b分析这是一道典型的区间覆盖问题,可以用线段树来解决。我们用线段树数组col[]记录区间的颜色信息,若某个区间下含有多种颜色,则原创 2017-04-16 01:11:27 · 993 阅读 · 0 评论 -
HDU 6070 Dirt Ratio(二分+线段树 17多校第四场)
题目大意 给定一个序列a[],让你求出一个子区间内不同元素个数除以区间长度的最小的一个值。n≤6∗104n\le 6*10^4 ,答案精度不高于10−410^{-4} 分析题目要求的是: min{dif[l][r]r−l+1}(1≤l≤r≤n,dif[l][r]表示区间[l,r]内不同元素的个数) min\{ \frac{dif[l][r]}{r-l+1}原创 2017-08-11 15:10:13 · 238 阅读 · 0 评论