[Sprout OJ] No.80 RMQ練習
題目來源: https://neoj.sprout.tw/problem/80/ 這題只是單純的RMQ問題,只要好好地維護遞迴的性質並且只要單點修改(不須推下去),因此就變成了普通的模板題。 #pragma gcc optimize("o2") #include<bits/stdc++.h> #define int long long int #define IOS ios_base::sync_with_stdio(false) #define TO cin.tie(NULL) #define MAXN 1000000 using namespace std; struct Node{ int l,r; int lson,rson; int data; }; Node segtr[MAXN * 2 ]; int str[MAXN]; int ptr = 0 ; void build( int l, int r, int index) { segtr[index].l = l; segtr[index].r = r; int mid = (l + r) / 2 ; if (l == r - 1 ) segtr[index].data = str[l]; else { int lson = segtr[index].lson =++ ptr; int rson = segtr[index].rson =++ ptr; build(l,mid,lson); build(mid,r,rson); segtr[index].data = min(segtr[lson].data,segtr[rson].data); } } void modify( int x, int val, int index) { if (segtr[index].l == segtr[index].r - 1 ) segtr[index].data = ...