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...