hdu 1556 初級線段樹

2021-05-28 11:45:32 字數 630 閱讀 1685

#include#include#include#define max 100005

#define mid (l+r)>>1

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

using namespace std;

int n;

struct tree;

tree tr[max<<2];

void bulid(int l,int r,int rt)

void add(int l,int r,int rt)

int m=(tr[rt].l+tr[rt].r)>>1;

if(l>=m+1)

add(l,r,rt<<1|1);

else if(r<=m)

add(l,r,rt<<1);

else

}void output(int rt,int t)

output(rt<<1,t+tr[rt].s);

output(rt<<1|1,t+tr[rt].s);

}int main()

output(1,0);

} return 0;

}

hdu 1556 簡單線段樹

漢語題,不解釋 思路 此題是線段樹的染色,先分段染色,可以nlogn級別,在算出每個位置的染色數 求染色數的時候,有兩種方法 1,用乙個數記錄step的值,之後除以2,把每個值相加,直到為一時結束 為從下向上尋找 2,用遞迴,從上往下尋找 下面是我的2 include include include...

HDU 1556線段樹區間修改

這是第乙個入手線段樹的區間修改的問題,區間修改本要該一整個區間包括這些結點和子結點的值,那麼會非常麻煩,這裡學習到了可以使用到laze陣列先記錄下需要修改的次數,然後等到查詢的時候一步步對子節點進行傳遞和修改塗色次數tre值和子結點的laze陣列的值。學習了該部落格 include include ...

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

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