HDU 1166 敵兵布陣 線段樹)

2021-09-09 01:38:27 字數 1080 閱讀 9969

聽說胡浩版的線段樹挺有名的。

於是就拜訪了一下他的部落格。詳情戳這裡。於是就全然仿照著胡浩大牛的風格寫的**。

至於原理。鵬鵬學長已經講的再清晰只是了。

我就在以下的**凝視中將原理說明一下吧。來紀念第一發線段樹。

以下是**+凝視。

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

#define lson l, mid, rt<<1//直接定義子節點,由於每次都要用到,所以直接定義乙個非常方便

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

const int maxn=51000;

int sum[maxn<<2];

void pushup(int rt)//向上更新父節點的值

void build(int l, int r, int rt)//建立二叉樹

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

build(lson);//向左子節點繼續建立二叉樹

build(rson);//向右子節點繼續建立二叉樹

pushup(rt);//所有建立完後向上更新父節點的值

}void update(int p, int x, int l, int r, int rt)//單點改動

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

if(p<=mid) update(p,x,lson);//假設要改動的值在這個區間左邊,就進入左子節點繼續尋找

else update(p,x,rson);//假設要改動的值在這個區間右邊,就進入右子節點繼續尋找

pushup(rt);//改動完後。仍然要向上更新父節點的值

}int query(int ll, int rr, int l, int r, int rt)//區間查詢

int main()

*/ getchar();

while(scanf("%s",s))

else if(!strcmp(s,"sub"))

else}}

return 0;

}

HDU 1166 敵兵布陣 線段樹

第一道線段樹的題目,正在學習中 include include include using namespace std define max 55555 int sum max 2 n void pushup int rt void build int l,int r,int rt int mid ...

hdu1166敵兵布陣 線段樹

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

A 敵兵布陣 線段樹 hdu 1166

a 敵兵布陣 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status practice hdu 1166 description c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek...