线段树BIT操作总结
1. 求区间最大子段和:
-6 3 5 -1 2 -2,这个数组最大子段和是3 5 -1 2。
操作类型:1e5次查询区间最大子段和。
方法:
每段区间维护4个值,区间最大子段和,左端点为l的区间最大子段和,右端点为r的区间最大子段和, 区间sum和。
pushup:
A. 区间最大和 = max {
1. ndr.左端点为l的区间最大子段和 + ndl.右端点为r的区间最大子段和
2. ndl.区间最大子段和
3. ndr.区间最大子段和}
B.左端点为l的区间最大子段和 = max{
1. ndl.左端点为l的区间最大子段和.
2. ndl.区间sum和 + ndr.左端点为l的区间最大子段和}
C. 右端点为r的区间最大子段和 = max{
1. ndr.右端点为r的区间最大子段和.
2. ndr.区间sum和 + ndl.右端点为r的区间最大子段和}
2. 区间开根号
维护2个值,区间mi和区间ma。
操作:ma - ma^(1/2) == mi - mi ^ (1/2)时转换为区间减法
3. 偏序问题(用BIT更方便)
排序后跑
4. 线段树二分
n个胶水每个胶水内涵胶水量为v,一次只能带一个去粘东西,第i次花费ai胶水,因为每个胶水会过期,每次尽可能用最早开的胶水。
维护区间ma值,优先选择左儿子。
5.求树上子树的sum和, ma等等
dfs序处理出来,跑线段树
人一我百,人十我万。