ZKW線段樹 非遞迴版本的線段樹

2022-05-01 15:06:13 字數 2365 閱讀 7142

學習和參考

下面是支援區間修改和區間查詢的zkw線段樹模板,先記下來。

#include #include  

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

//#include

//#include

//#include

using

namespace

std;

//#pragma gcc optimize(3)

//#pragma comment(linker, "/stack:102400000,102400000")

//c++

#define lson (l , mid , rt << 1)

#define rson (mid + 1 , r , rt << 1 | 1)

#define debug(x) cerr << #x << " = " << x << "\n";

#define pb push_back

#define pq priority_queuetypedef

long

long

ll;typedef unsigned

long

long

ull;

typedef pair

pll;

typedef pair

pii;

typedef pair

p3;//priority_queueq;

//這是乙個大根堆q

//priority_queue,greater>q;

//這是乙個小根堆q

//__gnu_pbds::cc_hash_tableret[11];

//這是很快的hash_map

#define fi first

#define se second

//#define endl '\n'

#define okc ios::sync_with_stdio(false);cin.tie(0)

#define ft(a,b,c) for(int a=b;a <= c;++a) //

用來壓行

#define rep(i , j , k) for(int i = j ; i < k ; ++i)

//priority_queue, greater>que;

const ll mos = 0x7fffffffll; //

2147483647

const ll nmos = 0x80000000ll; //

-2147483648

const

int inf = 0x3f3f3f3f

;const ll inff = 0x3f3f3f3f3f3f3f3fll; //

18const

double pi=acos(-1.0

);template

inline t read(t&x)

/*-----------------------showtime----------------------

*/const

int maxn = 100009

; ll tree[maxn

<< 2],add[maxn<<2

];

int n = 1

,n,m;;

void

build()

void update(int s,int t,int

k)

if(t&1

) }

for(; s; s>>=1,t>>=1

) }

ll query(

int s,int

t)

if(t & 1)

}for(; s;s>>=1,t>>=1

)

return

ans;

}intmain()

else

}return0;

}

zkw

線段樹和zkw線段樹

好啦,我們就開始說說線段樹吧 線段樹是個支援區間操作和查詢的東東,平時的話還是蠻實用的 下面以最基本的區間加以及查詢區間和為例 線段樹顧名思義就是棵樹嘛,葉子節點是每個基本點,它們所對應的父親就是它們的和,具體如下圖 但是對於這樣的線段樹來說,操作所需的時間是遠達不到我們的要求的 會被t 因為我們會...

zkw線段樹小結

zkw zkwzk w線段樹作為迴圈式線段樹具有較小的常數.其實樹狀陣列本質上就是線段樹 下標為 1,n 1,n 1,n 預處理乙個2 k n2 k n 2k n.然後總空間為2k 12 2k 1 2 k 1 4n 2 4n 2k 1 4n 後面令k 2 kk 2 k k 2k 那麼乙個葉子x xx...

鏈結 zkw線段樹

資料結構 走近zkw線段樹 一 資料結構 走近zkw線段樹 二 線段樹的擴充套件之 zkw線段樹 include define lc x x 1 define rc x x 1 1 using namespace std const int maxn 100005 int max int a,int...