線段樹入門 hdu1754

2021-08-20 10:21:48 字數 802 閱讀 4349

題目:

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

這讓很多學生很反感。 

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

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

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

參考:這裡和參考裡不一樣的是,這裡是求一段區間的最小值,所以在query的時候,應該返回左右子樹的最大值。同時pushup()函式也不太一樣。這裡注意scanf的輸入問題,當輸入整型後突然輸入字元,需要getchar()一下,把快取區清理。

#include #includeusing namespace std;

#define maxn 200008

int a[maxn];

int sum[maxn*4];

void pushup(int rt)

void build(int l,int r,int rt)

void update(int l,int c,int l,int r,int rt)

int mid=(l+r)/2;

if(l<=mid)

update(l,c,l,mid,rt<<1);

else

update(l,c,mid+1,r,rt<<1|1);

pushup(rt);//更新本節點

}int main()

{ // int r=1<<2+1,t=1<<2|1;//+優先順序高

// cout<

hdu 1754 基礎線段樹

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

寒假 HDU 1754(線段樹)

很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。input 本題目包含多組測試,請處理到檔案結束。在每個測試的第一行,有兩個...

HDU 1754 簡單線段樹

題意如下 給你從1到n 每個學生的成績。有m個操作,操作分為兩種,一種是查詢q x y 查詢從x學生到y學生的最高分數 另一種就是u x y 將學生x的成績改為y 一道明顯的線段樹題目 過程也是比較明確,建樹 查詢最大值 更新樹.附上 include include include define m...