题目链接:https://www.acwing.com/problem/content/246/
给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:
1、“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 maxx≤l≤r≤y
{∑ri=lA[i]
}。
2、“2 x y”,把 A[x] 改成 y。
对于每个查询指令,输出一个整数表示答案。
输入格式
第一行两个整数N,M。
第二行N个整数A[i]。
接下来M行每行3个整数k,x,y,k=1表示查询(此时如果x>y,请交换x,y),k=2表示修改。
输出格式
对于每个查询指令输出一个整数表示答案。
每个答案占一行。
数据范围
N≤500000,M≤100000
输入样例:
5 3
1 2 -3 4 5
1 2 3
2 2 -1
1 3 2
输出样例:
2
-1
分析:
线段树的题目真的恶心。整个人都不好了。
线段树的题目一般代码量都比较多。对编程水平要求较高。一旦出现问题,对我而言很难找bug。
线段树支持的操作也是对序列的查询和修改。一般树状数组的题目都可以用线段树来做。
一个题,如果涉及到区间的操作,一定要看题目信息能否容易的按照区间进行划分与合并(即:需要满足区间可加性)。通俗的讲就是(l~r