hdu 3564 樹狀陣列的靈活應用

2022-05-24 10:57:14 字數 799 閱讀 8903

注釋在**中

兩個樹狀陣列,或者用兩次

第一次維護的是空位的位置,update,更新管轄範圍內空位的個數,getk獲得第k個空位置的個數,其實就是第k小數,然後佔據該位置,更新相應資訊

第二次維護的是最長不下降子串行的長度,update:更新長度,getm:獲得當前位置之前的最長的lis長度,再把當前的數加進末尾

view code

#include

#include

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

const

int maxn=100005;

const

int maxlog=17;

int b[maxn],pos[maxn];

int n;

void update(int i,int value)

int getk(int k)

return ans+1;

}void updatem(int i, int value)//

維護lis的長度

int getm(int i)

int main()

//初始時有n個空位,從後往前插入

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

int ans=0;

printf("

case #%d:\n

",g++);

memset(b,0,sizeof(int)*(n+1));

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

puts("");

}return

0;}

SDNUOJ 1665 1668(樹狀陣列的應用)

什麼是樹形陣列 樹形陣列是一種用來維護字首和的工具,上圖中序列上的就是樹形陣列,它雖然長得像個樹,但是確是乙個陣列,比如上面的t 4 的值就是1 4的字首和,其他元素以此類推。add操作實現原理 ask操作實現原理 下面是區間查詢 單點修改 1665and1666 的 include include...

HDU 1166 mea的樹狀陣列

2019年,虛擬偶像大火,hololive公司旗下有n個虛擬主播,這些主播的粉絲全部都是單推,並且這些主播都被從1到n排好序了 我們知道粉絲數是會變化的,有一天mea問你,從x號vtuber 到 y號vtuber到底有多少單推啊?當然 x 和 y 都是從 1到 n的數 你馬上去每個人的youtube...

HDU 3874 Necklace 樹狀陣列的應用

題意 有一些數,這些數中有重複的,問從 l,r 區間的和是多少,重複的數只能算一次。思路 因為有多次詢問,所以暴力的話肯定超時,又因為是區間求和問題,所以可以考慮用樹狀陣列求。樹狀陣列可以解決沒有重複數的情況,因此這道題我們可以特殊處理一下。首先我們可以把所有的詢問都存起來,然後對詢問按右端點排序,...