
线段树(segment_tree)
Forward in time
永不停止前进
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
A - 敌兵布阵 HDU - 1166(segment_tree的单点修改+区间求和,基础!!)
这道题题意很简单就是如果字符为Q那么就询问[i,j]区间的和,如果为U,那么就更新i点值为j;线段树基础题目;那什么是线段树?我自己是这样理解的:线段是本质上就是一个区间的映射为一个节点+二叉树的后序遍历;著名的RMQ问题就是很基础的线段树操作;几何理解:可以发现线段树就是把区间分块,然后存下对应区间的问题规模(比如这个区间Max或者Min或者Sum或者平均值。。等等);可以很...原创 2019-08-22 20:02:12 · 157 阅读 · 0 评论 -
B - I Hate It HDU - 1754(线段树单点更新+区间求和)
题意:如果为Q就求[A,B]的最大值,如果是U就更新单点A的值为B;线段树基础题目:主要考察二叉树遍历逻辑+线段树基本操作(关于RMQ问题);AC代码:#include<bits/stdc++.h>using namespace std;const int maxn=200000+10;int Tree[maxn<<2],n,m;void Build(i...原创 2019-08-22 20:06:49 · 174 阅读 · 0 评论 -
C - Just a Hook HDU - 1698(线段树+lazy标记+区间更新)
题意:给你n初始化数组全为1,然后给你m个询问,每个询问就是改区间[X,Y]所对应的值为Z;这道题的主要难点在与push_down和lazy标记;其实我在学习线段树的时候也没太清楚这个lazy有什么用;但是现在明白了;它是为了减少时间复杂度的;其实线段树的基本操就有:1.建树;2.单点更新;3.区间的RMQ问题;4.区间更新;其实这些问题都是基于二叉树的后续遍历而引出来的;懒惰...原创 2019-08-22 20:25:14 · 144 阅读 · 0 评论 -
线段树基础操作(自己总结的)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+10;int Tree[maxn<<2],lazy[maxn<<2];int ans=0;void push_up(int root){ Tree[root]=Tree[root<...原创 2019-08-22 21:06:37 · 147 阅读 · 0 评论