很水的線段樹,單點更新(rmq更快)
#include#includeint n;
int in[200010];
struct treetree[540000];
int max(int a,int b)
void build(int s,int t,int id)
int mid=(s+t)>>1;
build(s,mid,id*2);
build(mid+1,t,id*2+1);
tree[id].max=max(tree[id*2].max,tree[id*2+1].max);
}void update(int id,int i,int tem)
int mid=(tree[id].s+tree[id].t)>>1;
if(mid>=i)
update(id*2,i,tem);
else
update(id*2+1,i,tem);
tree[id].max=max(tree[id*2].max,tree[id*2+1].max);
}int query(int id,int s,int t)
int main()
build(1,n,1); //這種初始化建樹比較快
char m[10];
for(i=1;i<=mm;i++)
if(m[0]=='q')
} }}
hdu 1754 I Hate It 樹狀陣列
小記 對於求區間的最值問題,如何利用樹狀陣列來解決它 idx i 表示1 i區間中最大的值,a是存放元素陣列 利用樹狀陣列來求解區間最值問題的原理就是樹狀陣列對二進位制的利用,對於樹狀陣列的第k個陣列元素值它的意義代表著區間 k lowbit k 1,k 的最大值,在它的下面有lowbit k 個類...
hdu 1754 I Hate It (線段樹版)
讀入的時候因為要先輸入字元c,所以要用getchar 和輸入時的 c處理掉空格,很煩,不按字元輸入而是 s輸入字串可避免這個問題 include include using namespace std define lson l,m,rt 1 define rson m 1,r,rt 1 1 def...
hdu1754 I Hate It 線段樹模板
很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。本題目包含多組測試,請處理到檔案結束。在每個測試的第一行,有兩個正整數 n ...