线段树
文章平均质量分 65
AC_0_summer
这个作者很懒,什么都没留下…
展开
-
HDU 1698 Dota钩子问题-线段树-(区间更新,区间查询)
题意:一段挂钩分成n段,每一段可以由铜、银、金做成,对应的价值分别是1,2,3,现在有m个操作(a,b,x)意思是改变区间[a,b]段的钩子为材质x,问m个操作之后这段挂钩的价值总和。挂钩的每一段初始为铜,也就是1。分析:区间更新,单点查询。确切的说是区间替换,询问总区间总和。线段树的典型应用之一。因为是区间更新,所以用 lazy[rt] 数组记录当前子树是否曾经更新过,lazy[rt]!原创 2015-08-17 01:47:58 · 858 阅读 · 0 评论 -
HDU 1556 给连续个球涂色-线段树-(区间更新,单点查询)
题意:有n个球,1~n,n个操作:(a,b),意思是把区间[a,b]里的球都涂一遍色,n次操作后,问每个球分别被涂了多少次。分析:区间更新,单点查询。一般区间更新都要用lazy[rt],不然对线段树的更新操作就退化为了暴力更新,会超时。代码:#include#include#includeusing namespace std;const int maxn=100000;原创 2015-08-17 19:08:52 · 876 阅读 · 0 评论 -
HDU 1166 敌兵布阵-线段树-(单点更新,区间查询)
题意:n个敌兵的阵营,多个操作:add a ,x:第a个阵营增加x个人;sub a,x:第a个阵营减少x;query a,b:查询区间[a,b]的总人数。分析:单点更新,区间查询。直接写。代码:#include#include#includeusing namespace std;typedef long long ll;const int maxn=50000;int原创 2015-08-17 19:03:13 · 624 阅读 · 0 评论 -
HDU 1754 多个学生偷改成绩问最高分-线段树-(单点更新,区间查询)
题意:n个学生有初始成绩,现在有m个操作,(Q,a,b):询问区间学号为[a,b]的学生的最好成绩;(U,a,b):修改学号为a的学生的成绩为b,要你执行这m项操作。分析:单点更新,区间查询。确切的说是单点替换,区间查询。线段的典型用法之二。代码:#include#include#include using namespace std;const int maxn=2000原创 2015-08-17 02:02:57 · 961 阅读 · 0 评论 -
!POJ 2352 左下角星星-线段树-(单点更新,区间查询)
题意:直接坐标系中有n个星星,每个星星左下角的星星个数是它的价值,输出价值为0~n-1的星星个数。分析:这题就没有上面四道线段树的题裸了。这题是怎么联系到区间,然后用线段树维护的呢?因为题目要求输入的次序是按y第一关键字,x第二关键字升序输入,那么我们可以想到对于星星A(x,y),它左下角的星星一定在比他先输入的星星中,所以我们只需判断在比他先输入的星星的x2,如果x2代码:原创 2015-08-17 21:35:08 · 1248 阅读 · 0 评论 -
!SPOJ 1043 多次查询区间最大连续和-线段树
题意:已知一个数列,现在有多次查询(a,b),查询区间[a,b]的最大连续和。分析:这道题没有更新操作,只有区间查询操作。动态在于待查询区间不同,最大连续和也不同。所以其实相当于每次查询的时候要计算一次待查询区间的最大连续和。有3种情况:1.待查询区间包含当前区间。那么就直接返回当前区间的最大连续和;2.待查询区间在当前区间的左区间或右区间。那么在左或右区间递归查询即可;3原创 2015-08-19 01:13:31 · 2014 阅读 · 0 评论