非常正規的板子題了可以說
首先安利乙個線段樹入門的部落格 %大佬
題解
注意幾個點就好啦
(1)懶標記 add[ ],陣列一定要開的大一點
字首和 sum[ ],陣列一定要開的大一點,還要開long long
(2)build 建樹函式:樹 k ,邊界 l ~ r
(3)add 加數函式:樹 k ,邊界 l ~ r ,區間加 p
(4)pushdown 標記下傳函式:樹 k ,邊界 l ~ r ,中間 mid
(5)modify 區間加數函式:樹 k ,邊界 l ~ r ,詢問區間 x ~ y ,區間加數 v
(6)quety 區間查詢函式:樹 k ,邊界 l ~ r ,詢問區間 x ~ y
**
#includeusingnamespace
std;
const
int maxn=1e5+10
;int
n,m,x,y,v,opr;
int a[maxn],add[maxn*4
];long
long sum[maxn*4
];long
long
ans;
inline
intread()
void build(int k,int l,intr)
int mid=(l+r)>>1
; build(k
<<1
,l,mid);
build(k
<<1|1,mid+1
,r);
sum[k]=sum[k<<1]+sum[k<<1|1];}
void add(int k,int l,int r,int
p)void pushdown(int k,int l,int r,int
mid)
void modify(int k,int l,int r,int x,int y,int
v)long
long query(int k,int l,int r,int x,int
y)int
main()
if(opr==2
)
}return0;
}
P3372 模板 線段樹 1
線段樹學習 這個題來看,線段樹分為建樹,更新,查詢。1.建樹 void build ll p,ll l,ll r ll mid l r 1 build lson p l,mid build rson p mid 1,r push up sum p void push up sum ll p 這段 的...
P3372 模板 線段樹 1
題 include includeusing namespace std typedef long long ll ll n,m,ans,x,y,op,val 因為下面有的函式需要用到x,y,val值,懶得傳參,故直接寫為全域性變數 const int n 100000 struct nodetre...
P3372 模板 線段樹 1
題目描述 如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數加上x 2.求出某區間每乙個數的和 輸入輸出格式 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含3或4個整數...