很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。
不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績
輸入格式:
第一行,有兩個正整數 n 和 m ( 0輸出格式:
對於每一次詢問操作,在一行裡面輸出最高成績
輸入樣例#1:
5 61 2 3 4 5
q 1 5
u 3 6
q 3 4
q 4 5
u 2 9
q 1 5
輸出樣例#1:
5659
這是乙個單點修改的模板題
不過注意這個和hdu的還不太一樣
最近似乎沉迷模板2333......
需要注意一定要在最底層比較是否改動
貼**
1 #include2 #include3 #include4 #include5using
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個用空...