HDU 4970樹狀陣列

2021-09-26 02:44:41 字數 554 閱讀 2583

差分法

作用:計算某個區間的和

步驟:1、建立cha,然後在要改變值的區間[a,b]上,cha[a]+=c,ch[b]-=c;

2.從前往後

for(int i=1;i<=n;i++)cha[i]+=cha[i-1];

由前面2步,就可以得到此時i上的每個值

3、再計算sum,走到當前的sum

4、這時就可以用sum[b]-sum[a]求得區間值了

//step1

while(m--)

//step2

for(int i=1;i<=n;i++)cha[i]+=cha[i-1];

樹狀陣列的運用,其實就是對上面的2步的優化,查詢的時候,不是乙個個去加而是用樹狀陣列的特性,由此來加速。

樹狀陣列模板

inline lowbit(int a)

void update(int a,int val)

}ll getsum(int a)

return ans;

}

hdu 4970 樹狀陣列 「改段求段」

題意 塔防。給1 n,給出m個塔,每個塔有攻擊力,給出k個怪獸的位子和血量,問有幾隻可以到達n點。今天剛剛複習了樹狀陣列,就碰到這個題,區間更新 區間求和型別。第三類樹狀陣列可以斬。注意一下大數即可。include include includeusing namespace std int64 t...

hdu 4970 樹狀陣列 「改段求段」

題意 塔防。給1 n,給出m個塔,每個塔有攻擊力,給出k個怪獸的位子和血量,問有幾隻可以到達n點。今天剛剛複習了樹狀陣列,就碰到這個題,區間更新 區間求和型別。第三類樹狀陣列可以斬。注意一下大數即可。include include includeusing namespace std int64 t...

hdu 4970 陣列的巧妙運用)

題目大意 有一些塔,規定li,ri di 表示殺傷力,塔在同乙個格仔只能攻擊同乙個怪獸一次,怪獸從初始位置跑到n的位置,問有多少怪獸能夠活著 吐槽 一看題,果斷線段樹送分題,然而被騙了,o nlogn 的演算法很難過去,跟新的次數和查詢的次數太多了,不過有的人用線段樹加加速輸入險過,至少我的不行 然...