樹狀陣列 Color the ball

2021-05-28 10:54:55 字數 1063 閱讀 4362

n個氣球排成一排,從左到右依次編號為1,2,3....n.每次給定2個整數a b(a <= b),lele便為騎上他的「小飛鴿"牌電動車從氣球a開始到氣球b依次給每個氣球塗一次顏色。但是n次以後lele已經忘記了第i個氣球已經塗過幾次顏色了,你能幫他算出每個氣球被塗過幾次顏色嗎?

input

每個測試例項第一行為乙個整數n,(n <= 100000).接下來的n行,每行包括2個整數a b(1 <= a <= b <= n)。

當n = 0,輸入結束。

output

每個測試例項輸出一行,包括n個整數,第i個數代表第i個氣球總共被塗色的次數。

sample input

31 12 23 331 11 21 30

sample output

1 1 13 2 1

思路:這是一道插線問點的題:

樹狀陣列無非有兩種考法:

1.修改一段區間的值,查詢的是某個位上的值。要向上統計,向下修改;即插線問點。

2.修改某個位置上的值,查詢的是一段區間的和。要向上修改,向下統計;即插點問線。

**:

#include#include#includeusing namespace std;

const int maxn=100001;

int d[maxn];

int n;

int lowbit(int i)

void update(int i,int x)

}int get_sum(int i)

return ret;

}int main()

for(i=1;i

**:#include#includeusing namespace std;

int n;

int aa[1000010];

int lowbit(int i)

void g(int n,int m)

}int f(int n)

return sum;

}int main()

while(k--)

return 0;

}

樹狀陣列1 樹狀陣列入門

仔細看一下,發現tree的每乙個節點的高度並不是隨意的,而是由它轉成二進位制之後末尾連續零的數量決定的,連續零的數量加1,就是高度,例如 3 11 零的數量為0,加1等於1,所以它的高度就是1 6 110 零的數量為1,加1等於2,所以它的高度就是2 8 1000 零的數量為3,加1等於4,所以它的...

樹狀陣列 瞎bb 樹狀陣列

樹狀陣列是乙個利用一維陣列和位運算組成的求解區間問題的高效資料結構,其構造如圖所示 首先,我們要用它解決單點修改 區間查詢的操作。根據這張圖我們建立乙個陣列bit,下標就是圖中顯示的十進位制數。bit i 就表示了圖中所示的一段區間的和,例如bit 6 sum 5,6 bit 4 sum 1,4 下...

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

樹狀陣列模板 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...