HDU4031 樹狀陣列 詳解

2021-08-11 02:13:50 字數 528 閱讀 5872

#include//類是差分的思想區間更新 

#include//思路:用每個點總的攻擊次數-無效次數

#include

using

namespace

std;

int n,q,t;

int s[20005];

int l[20005],r[20005],last[20005],useless[20005];

int lowbit(int x)

void insert(int i,int num)

}int sum(int x)

return ans;

}int main()

else

if(s1[0]=='q')

//這個坑點試因為這裡不加t而加t-1 因為for迴圈裡邊有個j++

}printf("%d\n",sum(a)-useless[a]); //所有次數減去無用次數 }}

}return

0; }

hdu 4031 Attack 樹狀陣列

題意 美國有種防護盾,能抵擋 的秘密 但每次抵擋後,需要t個單位時間去冷卻,期間不能起抵擋作用。思路 我一開始用線段樹做,但做到一半就坑爹了 當修改了線段樹的子節點資訊時,父節點的左右節點就會產生不一致性,那麼也就沒法直接修改父節點。其實這題線段樹和樹狀陣列都能做。我們現在把問題分為兩個部分 1.統...

樹狀陣列 詳解

對於普通陣列,其修改的時間複雜度位o 1 而求陣列中某一段的數值和的時間複雜度為o n 因此對於n的值過大的情況,普通陣列的時間複雜度我們是接受不了的。在此,我們引入了樹狀陣列的資料結構,它能在o logn 內對陣列的值進行修改和查詢某一段數值的和。假設a陣列為儲存原來的值得陣列,c為樹狀陣列。我們...

樹狀陣列詳解

樹狀陣列求區間和的一些常見模型 樹狀陣列在區間求和問題上有大用,其三種複雜度都比線段樹要低很多 有關區間求和的問題主要有以下三個模型 以下設a 1.n 為乙個長為n的序列,初始值為全0 1 改點求段 型,即對於序列a有以下操作 修改操作 將a x 的值加上c 求和操作 求此時a l.r 的和。這是最...