樹狀陣列的應用

2021-10-23 22:39:08 字數 634 閱讀 5908

#include#include#define lowbit(i) ((i)&(-i))

const int maxn=100010;

int c[maxn]; //樹狀陣列

//getsum函式返回前x個整數之和

int getsum(int x)

return sum; //返回和

}//update函式將第x個整數加上v

void update(int x,int v)temp[maxn];

//a是離散化後的原始陣列,c是樹狀陣列

int a[maxn],c[maxn];

//update函式將第x個整數加上v

void update(int x,int v)

return sum; //返回和

} //按val從小到大排序

bool cmp(node a,node b)

return l;

}int main()

//離散化

sort(temp,temp+n,cmp);

for(int i=0;i} //正式進入更新和求和操作

for(int i=0;ireturn 0;

}

樹狀陣列的應用

樹狀陣列的應用1 求逆序數 首先考慮將輸入陣列離散化,因為題目要求輸入的數值可以達到10的9次方,肯定不會開出那麼大的陣列。1.定義乙個結構體 val儲存原值,pos儲存原來在陣列中的位置 2.在對原結構體陣列對val值排序 3.定義儲存離散化資料的陣列flect,flect node i pos ...

樹狀陣列應用

一維樹狀陣列常用的3 個函式 int lowbit int x 取x的最低位1,比如4,則返回4,如5,則返回1 void update int i,int val 將第i個元素增加val int sum int i 求前i項的和 return s 以下陣列下標均預設從1開始 應用一假如給你乙個陣列...

數星星(樹狀陣列的應用)

1265.數星星 天空中有一些星星,這些星星都在不同的位置,每個星星有個座標。如果乙個星星的左下方 包含正左和正下 有 k k k 顆星星,就說這顆星星是 k k k 級的。例如,上圖中星星 5 5 5 是 3 3 3 級的 1,2 4 1,2,4 1,2,4 在它左下 星星 2,4 2,4 2,4...