hdu 敵兵布陣 線段樹基礎

2021-06-08 05:56:02 字數 894 閱讀 1653

/*第一道線段樹...參考了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國都掌握的一清二楚,每個工兵營地的人數都有可能發生...