HDU 1556樹狀陣列求解

2021-06-21 10:27:45 字數 1341 閱讀 1698

f - color the ball

time limit:3000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

practice

hdu 1556

description

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

3

1 12 2

3 33

1 11 2

1 30

sample output

1 1 1

3 2 1

題意:中文的 ,就不多說了

現在我們模擬氣球的狀態

當a= 3,b=7時:

1  2  3 4  5  6 7  8 9               n

o o o o o o o o o .............o

1  0  0 0  0 -1         (分別是data[3]到data[8]的值)第i個珠子被染色的次數是sum[i]即i的字首和,故只對a,b-1操作即可

現給出ac**

#include#includeusing namespace std;

int n,a,b,m;

const int max=100000+10;

int data[max];

int s[max];

int lowbit(int i)

void modify(int x,int delta)

}int sum(int x)

return ans;

}int main()

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

printf("%d\n",sum(m));

}return 0;

}

樹狀陣列專題 六 hdu1556

這是屬於樹狀陣列的應用二.對一段區間進行修改.然後訪問點的更新值.如何對於一段區間 a,b 更新的情況updata a,1 updata b 1,1 的理解.因為是對於 a,b 區間內的更新.那麼只更新a是如何去理解呢.對於getsum i 得到的是1 i的總和.那麼updata a 以後.對於a ...

樹狀陣列 or 線段樹 (HDU 1556)

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

HDU 1556 (差分陣列)

題意 n個氣球 1 到 n 編號 然後接下來n行 每行給2個整數 a b,從a到b依次給每個氣球塗一次顏色,n次後操作後忘記了第 i 個氣球塗過幾次顏色了 問算出每個氣球被塗過幾次顏色 思路 資料範圍 n 1e5 1 a,b n 時間 3e9 區間操作和單點查詢 1 線段樹 區間操作 都是log 2...