樹狀陣列(二)

2021-06-29 10:34:45 字數 867 閱讀 2318

hoj 2275

題意分析:給你乙個大小為50000的陣列a,要求在1秒內求出陣列中滿足的組合數。(0 <= ai <= 32768)

解題思路:雖然陣列很大,但是陣列裡的數很小啊,所以桶排一下,然後樹狀陣列求和就行了:

首先我們已經在hdu 1541這題中學會了怎麼求在ai前面比ai小的數的量了,那麼這題就是求在ai前面比ai小的數的量加上在ai後面比ai小的數的量,最後求和一下就是答案啦~

從頭開始計數,可以得到ai左邊比他小的數;那麼從尾開始計數,則可以得到ai右邊比他小的數,那麼對於ai來說,兩者相乘就是答案了:

**如下:

#include 

#include

#include

#include

#define maxn 33000

using

namespace

std;

int n,bit[33005],l[50005],a[50005];

int lowbit(int num)

int sum(int index)

void add(int index,int delta)

int main()

memset(bit,0,sizeof(bit));

for(int i=n;i>=1;i--)

printf("%lld\n",ans);

}return

0;}

注意從1開始計數還有資料範圍!

總結:

1、樹狀陣列真是一種神奇的資料結構啊!

2、細節部分還需注意!

樹狀陣列 二維樹狀陣列模板

樹狀陣列模板 int lowbit int x int add int x,int val int que int x 模板題 題解 include include include using namespace std int c 300000 rank 300000 int n int lowb...

樹狀陣列及二維樹狀陣列

一直以為樹狀陣列能用線段樹水過去,直到我今天碰上了樹狀陣列模板題。然後就是開始認真的學習樹狀陣列,突然發現怎麼這麼好寫qwqqqq。部分 一.樹狀陣列 樹狀陣列是一種資料結構,核心思想是利用二進位制的補碼思想。首先就是樹狀陣列的結構圖 然後我們對他進行變形 是不是感覺更好理解了呢?然後我們對其進行標...

樹狀陣列及二維樹狀陣列

樹狀陣列或者二叉索引樹也稱作binary indexed tree,又叫做fenwick樹 它的查詢和修改的時間複雜度都是log n 空間複雜度則為o n 這是因為樹狀陣列通過將線性結構轉化成樹狀結構,從而進行跳躍式掃瞄。通常使用在高效的計算數列的字首和,區間和。為什麼要用樹狀陣列 線段樹比樹狀陣列...