![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
magnte
这个作者很懒,什么都没留下…
展开
-
单点修改+区间最大连续子段和
小白逛公园 因为是区间最大子段和,所以除了左右两边子段和取最大,还要考虑合并之后是否更大,所以还需要对每个节点存最大前缀和和最大后缀和。 最大前缀和等于左儿子的最大前缀和和左儿子的总和加上右儿子的最大前缀和,所以还需要存每个节点的总和。 还要注意在查询的时候还要考虑合并子段的问题 代码: #include<bits/stdc++.h> using namespace std; const int N = 500010; int w[N],n,m,x,y,op; struct stu原创 2021-09-22 12:21:00 · 193 阅读 · 0 评论 -
单点修改+查找区间最大值
最大数 #include<bits/stdc++.h> using namespace std; const int N = 200010; int a,t,p,l,m,n; struct stu { int l,r; int v;//根据pushup定义所需的变量 } tr[N * 4]; void pushup(int u)//用两个子结点更新父节点 { tr[u].v = max(tr[u * 2].v,tr[u * 2 + 1].v); } void b原创 2021-09-22 12:11:10 · 315 阅读 · 0 评论