HDU 1754 樹狀陣列做法

2021-09-12 07:16:30 字數 1084 閱讀 5855

很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。

這讓很多學生很反感。

不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。

input

本題目包含多組測試,請處理到檔案結束。

在每個測試的第一行,有兩個正整數 n 和 m ( 0output

對於每一次詢問操作,在一行裡面輸出最高成績。

sample input

5 6

1 2 3 4 5

q 1 5

u 3 6

q 3 4

q 4 5

u 2 9

q 1 5

sample output

565

9

hint

huge input,the c function scanf() will work better than cin
思路:rmq這種問題強烈建議用線段樹來做,樹狀陣列可以做但是複雜度是o((lgn)^2),比較慢,不過為了練習一下樹狀陣列還是來一發題解吧。這種問題樹狀陣列的節點維護的是自己所管理的節點中的最大值,不管對於查詢操作還是修改操作,這個節點都只能在自己維護範圍之內的節點進行。而且進行查詢操作是對[l,r]進行查詢,然而對r進行lowbit操作可能會小於l,因此這時候只能在原序列中找最大值。

#include#include#include#define inf 0x3f3f3f3f

using namespace std;

const int maxn=200000;

int tree[maxn+5];

int a[maxn+5];

int n;

inline int lowbit(int x)

void update(int pos)

return max;

}int main()

for(int i=0;ielse

}} return 0;

}

hdu1754 求區間最值 線段樹 樹狀陣列

題意不用解釋了 線段樹 include include using namespace std define lson l m rt 1 define rson m 1 r rt 1 1 const int maxn 222222 int max maxn 2 void pushup int rt ...

hdu 1754 單點更新

題意 很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。5 6 1 2 3 4 5 q 1 5 u 3 6 q 3 4 q 4...

hdu 1754 基礎線段樹

題目鏈結 思路 比較簡單的線段樹,區間求最值,單點更新。讀入字元的時候,最好用字元陣列儲存,使用 s讀入,如果使用 c 會t 好像是會吃掉換行符。include include include define maxn 2000005 using namespace std int stu maxn ...