漢語題,不解釋;
思路:此題是線段樹的染色,先分段染色,可以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個氣球已經塗過幾次顏色了,你能幫他算出每個氣球被塗過幾次顏色嗎?...