模板 吉老師線段樹

2021-10-10 22:32:07 字數 1993 閱讀 2478

acm模板

gorgeous sequence

區間最值操作往往採用以下辦法

線段樹維護:

實現區間最小值操作,考慮u節點維護的區間,進行如下處理

時間複雜度請直接查閱吉老師2023年國家集訓隊**(不太會~

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

#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int mod=

998244353

;const

int n=

1000010

;// 快讀

template

<

class

t>

inline

void

read

(t &res)

struct node

tree[n<<2]

;int n,m;

ll a[n]

;void

pushup

(int u)

else

if(tree[u<<1]

.mx1]

.mx)

else

}void

pushlazy

(int u,ll x)

void

pushdown

(int u)

void

build

(int u,

int l,

int r);if

(l==r)

int mid=l+r>>1;

build

(u<<

1,l,mid)

,build

(u<<1|

1,mid+

1,r)

;pushup

(u);

}void

modify

(int u,

int l,

int r,ll x)

pushdown

(u);

int mid=tree[u]

.l+tree[u]

.r>>1;

if(l<=mid)

modify

(u<<

1,l,r,x);if

(r>mid)

modify

(u<<1|

1,l,r,x)

;pushup

(u);

}ll qmax

(int u,

int l,

int r)

ll qsum

(int u,

int l,

int r)

intmain()

else

if(op==1)

printf

("%lld\n"

,qmax(1

,l,r));

else

printf

("%lld\n"

,qsum(1

,l,r));

}}return0;

}

吉司機線段樹

學了一下吉老師的在某年wc的講的線段樹。特來總結,學習一番.楔子 給出乙個數列a 每次讓某個區間中的 a i 對x取min 詢問某個區間的和。n,m leq 500000 由於存在多次詢問 我們進行標記永久化也沒什麼用 如果是一次的話我可以每次把標記標記到區間 最後求值即可。這裡要引出吉司機線段樹了...

勢能線段樹 吉司機線段樹 我沒有腦子

bzoj3211 花神遊歷各國 bzoj5312 冒險 bzoj4355 play with sequence bzoj4695 最假女選手 a i max a i,x 這種操作的 tag 不需要實際記錄下來,son.mn1 min max son.mn1,dad.mn1 dad.mx1 就行了。修...

線段樹模板(模板)

參考部落格 持續更新。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img xhrgdjcd 1613976863463 區間儲存在陣列中的下標對應為 12 3 4 5 6 7 8 9 10 11 12 13 14 15 四部分單點更新 根據題目的要求編寫自己的pushup,query...