序列兩種操作:
q l:輸出末尾l個數中的最大值
q 操作用查詢區間最大值即可完成,a 操作需要能夠 add 元素。
線段樹明顯可以,理解也比較簡單
這裡採用樹狀陣列維護區間最大值的 板子 來滿足這兩種操作。
類封裝的最值
#include
"cstdlib"
#include
#include
#include
#include
#include
#include
using
namespace std;
#define lowbit(x) (x&(-x))
class
binary_indexed_trees_max
//區間最大值
}int
query
(int x,
int y)
//c[y]是[ y-lowbit(y)+1 , y ]內的最大值
//y-lowbit(y) > x ,則query(x,y) = max( c[y] , query(x, y-lowbit(y)) );
//y-lowbit(y) <=x,則query(x,y) = max( a[y] , query(x, y-1);
return ans;
}}bit;
intmain()
else
}return0;
}
洛谷 P1198 JSOI2008 最大數
p1198 jsoi2008 最大數現在請求你維護乙個數列,要求提供以下兩種操作 1 查詢操作。語法 q l 功能 查詢當前數列中末尾l個數中的最大的數,並輸出這個數的值。限制 l不超過當前數列的長度。2 插入操作。語法 a n 功能 將n加上t,其中t是最近一次查詢操作的答案 如果還未執行過查詢操...
洛谷P1198 JSOI2008 最大數
現在請求你維護乙個數列,要求提供以下兩種操作 1 查詢操作。語法 q l 功能 查詢當前數列中末尾l個數中的最大的數,並輸出這個數的值。限制 l不超過當前數列的長度。2 插入操作。語法 a n 功能 將n加上t,其中t是最近一次查詢操作的答案 如果還未執行過查詢操作,則t 0 並將所得結果對乙個固定...
洛谷 P1198 JSOI2008 最大數
題目鏈結 如果還沒看題目的可以先去看一下題目 前置知識線段樹 這個題目就是兩個操作,乙個是新增資料,乙個是查詢區間最大值,但是由於資料範圍達到1e5,所以我直接想到的就是線段樹了,下面我們來看看線段樹要怎麼做。首先是建樹,由於題目中的資料有負數,負數,負數,所以大家建樹的時候一定要注意!初始化權值和...