樹狀陣列及其他特別簡單的擴充套件

2022-04-30 02:15:07 字數 1231 閱讀 9287

度娘真是個好東西

樹狀陣列

struct node

void updata(int x,int value) }

int sum(int x)

return ans;

} int check(int x,int y)

};

樹狀陣列可以快速的查詢區間和插敘兩次

所以我們就可以將被求和換成其他意義的陣列,完成不同的任務

比如說區間修改和單點查詢(注意這兩個是同時存在的),還比如求逆序對

上題逆序對

單點查詢和區間修改

對於逆序對這道題,在桶拍上用樹狀陣列,還需要進行離散化。如果資料範圍是int以外,那直接開桶是要炸的 樹狀陣列就是個辣雞 。

#include#includeusing namespace std;

struct haha

;bool compare(haha a,haha b)

haha in[41000];

struct node

void updata(int i,int value)

return ;

} int sum(int x)

return ans;

} int check(int x,int y) };

node bit;

int cym[41000],da=0,h=0;

int main()

sort(in+1,in+n+1,compare);

for(int i=1;i<=n;i++)

cym[in[i].hao]=da;

} for(int i=1;i<=n;i++)//順序插入,為什麼??就不告訴你,自己想去吧

cout《區間修改和單點查詢的話就是利用差分陣列。

#include#includeusing namespace std;

struct node

int lowbit(int x)

void updata(int pos,int value) }

int sum(int pos)

return pass;

} int check(int left,int right) };

node bit;

int main()

for(int i=1;i<=m;i++)

if(a==2)

}}

簡單的樹狀陣列

目錄對結構的探索 引 zkw 線段樹介紹 對結構的探索 續 小結future 當然我不可能把所有知識 羅列,希望我的文字會給你帶來一些啟發和消遣。單單拿出樹狀陣列來說的話,可以說它是乙個利用某些數列資訊的區間可並性,平衡數列單點修改和字首查詢時間複雜度的資料結構,乙個樹狀陣列維護乙個數列的資訊。樹狀...

對樹狀陣列的 簡單 理解

當時學資料結構的時候,暑假訓練的課上得雲裡霧裡,自己還忙於補之前的題,導致只聽完了課,內容都沒有消化.學完了樹狀陣列,只知道怎麼用,該用的時候還想不起來用.現在細想一下,簡單的樹狀陣列就是 點修改 區間查詢,能降一位o n 到log n 現在有乙個序列,a n 假設n 16.設 c 1 a 1 c ...

樹狀陣列簡單易懂的詳解

樹狀陣列確實是個好東西啊,以前搞比賽的時候了解過它,會套用模版,但確沒有深入理解這個東西,先學會用輪子,然後再學造輪子嘛,這段時間再回頭研究了一下,發現二進位制在演算法中真的是的好東西,它可以使演算法的時間複雜度降到n的二進位制表示中的1相關,大家都知道,求乙個二進位制中的1的個數,這個時間複雜度為...