codeforces 91b queue (線段樹,區間最值)
題意是,對於給定區間內的每個元素,要求求出離他最遠的那個元素之間的距離。
可以維護乙個線段樹的最小值,每次對於乙個元素,查詢其最右邊的元素的位置。
#include#include#include#includeusing namespace std;
const int maxn = 1e5+6;
struct node
edge[4*maxn];
int a[maxn];
unordered_mapvis;
void build(int next,int x,int y)
else
}int query(int next,int d)
int main()
build(0,0,n-1);
int h;
for(int i=0;ireturn 0;
}
區間最值與線段樹
區間最值問題 有如下無序序列,求任意子區間段的最大值。接著,我們要用分治的思想來快速地解決上面的問題。在解決問題之前,先介紹一些分治的概念。二分查詢 二分查詢是分治思想的典型運用 我們有如下序列 a1,a2,a3 an.要查詢其中等於b的元素。一種方法就是乙個個對比,看看是不是相等,時間複雜度為n。...
動態區間最值(RMQ) 線段樹
建樹 a aa陣列為初始陣列,tre etree tree 陣列為樹 typedef long long ll const int inf 0x7fffffff const int maxn 2e5 10 int a maxn int tree maxn 2 lz maxn 2 建樹函式 和普通線段...
區間歷史最值筆記 線段樹
cpu監控 要你維護對序列上的操作 1 區間加 2 區間賦值 3 區間最大值 4 區間歷史最值 使用線段樹 標記維護,記錄節點上發生的所有事件。注意到乙個線段樹節點,如果進行了modify操作,那麼接下來的加法都可以認為是modify。那麼乙個節點上的標記長度就至多為2了。設 text 標記時節點實...