敵兵布陣 線段樹 單點更新 樹狀陣列

2021-08-20 08:46:39 字數 1098 閱讀 9319

這道題算是線段樹的入門題了,線段樹理解的話其實是挺好理解的,但寫的話就感覺挺不好寫的,畢竟有好幾十行**,講解的話看下別人的部落格,他們講的我覺得很清楚了,然後如果覺得我的**風格跟你差不多的,能接受我的這種寫法的話,有什麼不懂得可以問我。

樹狀陣列解法:

ac**:

#include #include #include #include #define lson l, mid, o << 1

#define rson mid + 1, r, o << 1 | 1

#define maxn 50005

using namespace std;

int sum[maxn << 2];

int t,n;

string str;

void pushup(int o)

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

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

build(lson);

build(rson);

pushup(o);

}void update(int x, int ans, int l, int r,int o)

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

if(x <= mid) update(x, ans, lson);

else update(x, ans, rson);

pushup(o);

}int query(int l, int r, int l, int r, int o)

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

int ans = 0;

if(l <= mid) ans += query(l, r, lson);

if(r > mid) ans += query(l, r, rson);

return ans;

}int main()

else if(str == "sub")

else

}} return 0;

}

敵兵布陣 線段樹 單點修改 區間查詢 樹狀陣列

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

HDU1166 敵兵布陣 線段樹 單點更新

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

hdu1166 敵兵布陣(線段樹單點更新)

題意 n個陣營一字排開,每個初始有a i 個人。現有兩種操作 q a b 查詢 a,b 之間總人數並輸出 a s a b 在a號位新增 刪除b個人 線段樹功能 update 單點增減 query 區間求和 1676 kb 312 ms include include include include ...