洛谷 P1198 JSOI2008 最大數

2021-10-02 20:19:05 字數 761 閱讀 7362

序列兩種操作:

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,所以我直接想到的就是線段樹了,下面我們來看看線段樹要怎麼做。首先是建樹,由於題目中的資料有負數,負數,負數,所以大家建樹的時候一定要注意!初始化權值和...