線段樹的各種板子

2021-07-25 11:03:44 字數 2282 閱讀 9128

或者說葉節點 所代表的區間是1呀。

想象成初中歷史書上的周朝等級制度圖就吼了呀!

只不過是一顆樹而已。

或者這麼看更吼?

反正就是一顆樹辣!不是一顆賽艇!

我承認走神了(義正言辭)。

真正的線段樹是這樣的。。。

大概就是這樣!

然後上強勢板子!

#include    

#include

#include

#include

#define ls (x << 1)

#define rs (x << 1 | 1)

#define mid int mid=(l+r)>>1

using

namespace

std;

int a[101000],t[400100],n,m,l,r,place,add,ans;

inline

int gi()

while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();

return x*si;

}inline

void build(int x,int l,int r)

else t[x]=a[l];

return;

}inline

void updata(int x,int l,int r,int k,int addnum)

else t[x]+=addnum;

return;

}inline

int query(int x,int l,int r,int xl,int xr)

else

return t[x];

}int main()

else}}

然後是區間修改+看你看不看得出來的查詢!

你問我lazy和down是什麼意思?因為很懶!懶得改!

#include

#include

#include

#include

#define n 500010

#define ls x << 1

#define rs x << 1 | 1

using namespace std;

intsum[n], lazy[n], n, q, i, size[n], a[n];

int gi()

void down(int x)

void build(int x, int l, int r)

int mid = (l + r) >> 1;

build(ls, l, mid), build(rs, mid + 1, r);

sum[x] = sum[ls] + sum[rs];

} void updata(int x, int l, int r, int xl, int xr, int v)

int mid =(l + r) >> 1;

if (xr <= mid) updata(ls, l, mid, xl, xr, v);

else

if (xl > mid) updata(rs, mid + 1, r, xl, xr, v);

else updata(ls, l, mid, xl, mid, v), updata(rs, mid + 1, r, mid + 1, xr, v);

sum[x] = sum[ls] + sum[rs];

}int query(int x, int l, int r, int xl, int xr)

int main()

}

然後還有什麼不懂得朋友可以

嘿嘿嘿。

這個時候是不是應該

日常安利一波

小題目?

codevs 1080 絕對不是什麼裸題

codevs 1082 也不是什麼裸題

然後大家可能會發現好難呀

給大家一道裸題吧!

codevs 1954 ( 題目名字就叫線段樹 )

主席樹板子(可持久化線段樹)

主席樹寫的比較好的部落格 題目描述 靜態區間l,r的最小值。方法 離散化輸入陣列,以離散化之後的陣列建立多顆線段樹。因為資料為離散化之後的滿足單調,直接查詢就可。問題一 何為離散化?其實我也不知道 把靜態區間排序,去重之後剩餘的即為離散化之後的陣列。此操作建議使用c 中stl。sort b 1,b ...

斜率優化的各種板子

維護由若干點 x,y 構成上凸包,並支援求給定乙個斜率k的求通過某個點截距的最大值,需保證 x 遞增,詢問 k 遞減是用query,否則用query2,單次log n 判斷需要用到叉積,注意是否會爆掉ll。namespace ch point operator const point rhs con...

0817 線段樹板子 洛谷P3373

傳送門 此題涉及區間修改,稍微需要注意一點的地方就是它又有區間乘,又有區間加。所以我們在處理到區間乘的時候要順帶把lazy add標記也乘以相應的值 程式裡是lazya 注意 用來記錄乘的懶標記初值應該為1 include include include include include includ...