基本的建立線段樹和查詢一段區間內最小值與最大值。
方法一:
#include#include#includeusing namespace std;
struct sto
;int a[1000300];
sto m[8000300];
//構建線段樹,目的:得到m陣列.
void build(int node, int b, int e)
else
else
}}//找出區間 [i, j] 上的最小值的索引
int query(int node, int b, int e, int i, int j)
int query2(int p,int b,int e,int l,int r)
;tree tr[4000300];
int max(int a, int b)
int min(int a, int b)
void build(int l, int r, int rt)
int mid = (l + r) >> 1;
build(l, mid, rt << 1);
build(mid + 1, r, rt << 1 | 1);
tr[rt].maxx = max(tr[rt << 1].maxx, tr[rt << 1 | 1].maxx);
tr[rt].minn = min(tr[rt << 1].minn, tr[rt << 1 | 1].minn);
}int resmax = -99999999, resmin = 99999999;
void quemax(int l, int r, int rt)
}void quemin(int l, int r, int rt)
int mid = (tr[rt].left + tr[rt].right) >> 1;
if (mid >= r)
quemin(l, r, rt << 1);
else
if (mid + 1 <= l)
quemin(l, r, rt << 1 | 1);
else }
int main()
for (int i = 1; i + k <= n + 1; i++)
//system("pause");
}
未完待續。。。
線段樹 P4588 線段樹用法
簡單來說就是使用線段樹來儲存操作步驟,因為如果直接計算的話long long會溢位,所以建立乙個 1,q 的線段樹,使用線段樹的葉子節點來表示權值,非葉子節點表示操作過程 開始的時候線段樹的葉子節點初始化為1,而非葉子節點c k c k 1 c k 1 1 mod 也為1。當開始進行操作的時候,如果...
動態規劃用法歸納
在實際應用中,展示動態規劃的用法。01揹包問題 include includeusing namespace std int val 5000 int wei 5000 int f 13000 inline int max int a,int b int main cout 大意 一共有n個管道,每...
split 的用法歸納
python中常常用到split 方法,今天歸納一下這個方法具體用法1.input split 輸入wang a tao 會被自動分割為wang a tao 三個單元,並且每個單元都是乙個整體 s wang a tao split 此時s為list型 for i in s print i 輸出結果 ...