/*第一道線段樹...參考了not only success的**風格,挺好的.
這是一道單點更新的線段樹.先修改葉子,然後遞迴修改祖先.也可用樹狀陣列.*/
#include #include #define maxn 50001
#define lson l,mid,rt<<1//《箭頭指向的為移動的方向
#define rson mid+1,r,rt<<1|1
int sum[maxn<<2];
int n,l,r;
void pushup(int rt)//將資訊傳遞到父親節點
void build(int l,int r,int rt)//rt為祖先的陣列下標
int mid=(l+r)>>1;
build(lson);
build(rson);
pushup(rt);
}void update(int p,int val,int l,int r,int rt)//p為要修改的線段元的位置,val為要改變的值,後面意義同上.模擬樹狀陣列理解.
int mid=(r+l)>>1;//p=r) return sum[rt];//這是所要查詢的線段完全包含當前線段的情況,滿足題意
int mid=(l+r)>>1;
int s=0;//這是不完全包含的情況
if(r>mid) s+=query(l,r,rson);//將查詢的區間拆成子區間進行查詢,最後返回的子區間的和即為祖先的值,待查詢的值.
if(l<=mid) s+=query(l,r,lson);//第二個if的前面不能加else.因為這兩個if可能是同時滿足的.
return s;
}int main()
}return 0;
}
敵兵布陣 線段樹
description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工...
敵兵布陣 線段樹
敵兵布陣 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿...
敵兵布陣 線段樹
c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...