HDU 1166 敵兵布陣(線段樹模板)

2021-10-04 01:48:20 字數 1446 閱讀 4888

由於涉及到整個區間的資料修改和查詢,所以是一道線段樹題目。

這裡主要的就是記住模板:

貼個大佬部落格:

然後我就偷懶吧。。

#include

#include

using

namespace std;

#define mem(a) memset(a,0,sizeof(a))

#define lson l, m, rt << 1

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

const

int maxn=

50005

;typedef

long

long ll;

ll sum[maxn<<4]

=;ll add[maxn<<2]

=;void

pushup

(ll rt)

void

pushdown

(ll rt,ll m)

}void

build

(ll l,ll r,ll rt)

ll m=

(l+r)

>>1;

build

(lson)

;build

(rson)

;pushup

(rt);}

void

updata

(ll l,ll r,ll num,ll l,ll r,ll rt)

pushdown

(rt,l-r+1)

; ll m=

(r+l)

>>1;

if(l<=m)

updata

(l,r,num,lson);if

(r>m)

updata

(l,r,num,rson)

;pushup

(rt);}

ll query

(ll l,ll r,ll l,ll r,ll rt)

pushdown

(rt,r-l+1)

; ll m=

(l+r)

>>1;

ll ans=0;

if(l<=m) ans+

=query

(l,r,lson);if

(r>m) ans+

=query

(l,r,rson)

;return ans;

}int

main()

if(!strcmp

(cmd,

"add"))

if(!strcmp

(cmd,

"sub"))

if(!strcmp

(cmd,

"end"))

break;}

}return0;

}

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...