线段树
宝宝睡醒了
这个作者很懒,什么都没留下…
展开
-
线段树
线段树线段树是什么?线段树是一颗二叉搜索树,对于一个线段,用二叉树的形式表示。它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。线段树的作用用来解决区间问题最基本的用来单点修改,区间修改,单点查询,区间查询。其中两个经典问题是维护某段长度的最大值最小值,某段区间和。然后可以引申出求区间最大值和最小值之差。线段树的操作线段树有五个操作,pushup,pushdown,build,query,modifypushup 操作这个操作的意思就是向上维护,如果修改了某一点或原创 2020-12-03 00:27:23 · 385 阅读 · 0 评论 -
线段树(带懒标记)
线段树(带懒标记)区间和5个操作:pushup(),pushdown(),build(),modify(),query()#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n, m;int w[N];typedef long long ll;struct node{ int l, r; int sum, add;}tr[N * 4];void pushup(int原创 2020-10-10 00:05:06 · 194 阅读 · 1 评论 -
线段树-区间最大值与最小值之差
#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;const int INF = 0x3f3f3f3f;struct node{ int l, r; int Max, Min;}tr[N * 4];int a[N];void pushup(int u){ tr[u].Max = max(tr[u << 1].Max, tr[u << 1 | 1]原创 2020-10-11 00:18:21 · 613 阅读 · 0 评论