线段树学习笔记(初级:只支持区间加、区间求和)
研究了很长时间线段树的理论,发现打过一遍代码就啥都懂了 简单来说,线段树是基于分治对区间进行快速修改的,所以时间效率很高 然后就是代码(洛谷太坑,query里面的ans也要开long long) 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 typedef long long ll; 7 const int N = 1e5 + 5; 8 ll addv[N*4],sumv[N*4],a[N]; 9 int n,m; 10 inline int read() 11 { 12 int x=0,w=1; char c=getchar(); 13 while (c>'9'|| c<'0') {if(c=='-') w=-1; c=getchar();} 14 while (c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar(); } 15 return w*x; 16 } 17 void pushup(int k) 18 { 19 sumv[k]=sumv[k<<1]+sumv[k<<1|1]; 20 } 21 inline void build(int o,int l