線段樹入門(hdu 1166)點修改 區間求和

2021-09-24 14:58:18 字數 965 閱讀 1995

hdu1166

題意:中文題。。

線段樹的入門題,線段樹是支援一種區間操作的資料結構,時間複雜度能在o(m*logn)時間內完成,m是操作次數,線段樹是一種樹結構,每次不管是修改單點的值還是求和,只用維護一條簡單路勁(從根到葉子節點)能在logn時間內完成,**中建樹過程從下到上建樹,更新也是從下到上

#include #include #include #include using namespace std;

const int maxnode=1<<18;

const int maxn=50000+10;

int sum[maxnode];

void push_up(int i)

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

build(i<<1,l,(l+r)/2);

build(i<<1|1,(l+r)/2+1,r);

push_up(i);

}void update(int n,int val,int l,int r,int i)

int m=(l+r)>>1;

if(n<=m)update(n,val,l,m,i<<1);

else update(n,val,m+1,r,i<<1|1);

push_up(i);

}int query(int a,int b,int l,int r,int i)

int m=(l+r)>>1;

int ans=0;

if(a<=m)ans+=query(a,b,l,m,i<<1);

if(b>m)ans+=query(a,b,m+1,r,(i<<1)+1);

return ans;

}int main()

else if(s[0]=='a')

else if(s[0]=='s')}}

return 0;

}

初步線段樹 hdu1166

include include includeusing namespace std define max 50000 struct node node maintree 4 max void settree int n,int l,int r int main printf case d n tt...

hdu 1166 線段樹 初步

subject interval tree author a clay created date 2012 02 03 sample hdoj 1166 敵兵布陣 很基礎,很赤裸,但也很經典 include include include include include define bug cou...

敵兵布陣 HDU 1166(線段樹點更新)

c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...