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