区间合并
SPOJ GSS1
题意
- 给一个$n$长度的序列,$A[1]…A[n], ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 )$
- $M$个询问 询问区间内最大连续和
题解
- 线段树每个节点维护$Lmax,Rmax,maxx,sum$
- $Lmax$表示从左端点开始的最大连续和 $Rmax$同理 $maxx$不受端点限制 $sum$表示这节点上的总和
- 转移详见代码
1 |
|
HDU5316
题意
- 给一个$n(n<=1e5)$长度的数列有两种操作
- $1$:修改一个点
- $2$:查询一个区间,查询一个最大子序列,子序列需满足下标奇偶交替,比方说$1,4,5,6$,或者$4,5,6$
题解
奇偶交替的序列无非四种情况
- 奇开头偶结尾
- 奇开头奇结尾
- 偶开头奇结尾
- 偶开头偶结尾
然后我就可以存这四个东西了,以$o$表示$odd$,$e$表示$even$
所以我取名就是$oo,ee,oe,eo$
转移详见代码
1 |
|
标记合并
uva11402
题意
- 给一个01串,每次有四种操作:
- 1:把区间置1
- 2:把区间置0
- 3:区间内的01翻转
- 4:查询区间1的个数
题解
我的代码
1 |
|
高级姿势
对线段树高级姿势有兴趣的同学
LCY表示太弱看不懂 有菊苣看懂了教教我