hdu 1556 簡單線段樹

2021-06-26 06:08:51 字數 895 閱讀 3340

漢語題,不解釋;

思路:此題是線段樹的染色,先分段染色,可以nlogn級別,在算出每個位置的染色數;求染色數的時候,有兩種方法

1, 用乙個數記錄step的值,之後除以2,把每個值相加,直到為一時結束;為從下向上尋找;

2,用遞迴,從上往下尋找;

下面是我的2**;

#include

#include

#include

#include

#include

#include

using namespace std;

const int sizen=200000+100;//千萬可用define定義這個表示式

struct ele

p[sizen*4];

void build(int l,int r,int step)

}void update(int l,int r,int step)}}

int summ(int x,int step)

}int main()

for(i=1;i#include

#include

int a[100002];

int t[100002];

struct ele

p[401111];

void build(int l,int r,int step)

else

}void update(int l,int r,int step)

else}}

int main()

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

if(i!=n)

printf("%d ",j);

else

printf("%d\n",j);}}

return 0;

}

hdu 1556 初級線段樹

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...

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個氣球已經塗過幾次顏色了,你能幫他算出每個氣球被塗過幾次顏色嗎?...