線段樹 洛谷P1531 I Hate It

2022-05-28 03:15:09 字數 1049 閱讀 7350

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

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

輸入格式:

第一行,有兩個正整數 n 和 m ( 0輸出格式:

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

輸入樣例#1:

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

輸出樣例#1:

565

9

這是乙個單點修改的模板題

不過注意這個和hdu的還不太一樣

最近似乎沉迷模板2333......

需要注意一定要在最底層比較是否改動

貼**

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int n=0,m=0,in[200010],val[800050],x=0,y=0;7

char str[10];8

9void build(int pos,int ll,int

rr)17}18

19void change(int pos,int ll,int

rr)25

int mid=(ll+rr)/2;26

if(x<=mid) change(2*pos,ll,mid);

27else change(2*pos+1,mid+1

,rr);

28 val[pos]=max(val[2*pos],val[2*pos+1

]);29}30

31int ask(int pos,int ll,int

rr)42

43int

main()

55return0;

56 }

線段樹2 洛谷p3373 線段樹

題目位址 解釋 多了乙個乘法操作,可以考慮優先順序。每次先算乘法。首先,對於乙個區間 和為s 假設已經按 a 乘b進行了操作。值得到的值為 s a b sb ab 假設先乘得到 sb a 這樣相比,add應該還要再乘上乙個b才對,所以,當更新到乙個區間時,為了進行先乘的操作而不讓結果發生變化,應該將...

洛谷 P3372 線段樹 1

今天植樹節,來種一棵線段樹。傳送門如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數加上x 2.求出某區間每乙個數的和 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第 i 個數字表示數列第 i 項的初始值。接下來m行每...

洛谷 P3373 線段樹 2

作為一道調了三天的模板題,真的太虐心了對於理解線段樹大有用處。傳送門如題,已知乙個數列,你需要進行下面三種操作 1.將某區間每乙個數乘上x 2.將某區間每乙個數加上x 3.求出某區間每乙個數的和 輸入格式 第一行包含三個整數n m p,分別表示該數列數字的個數 操作的總個數和模數。第二行包含n個用空...