HDOJ 1698 區間更新

2021-06-27 00:10:33 字數 791 閱讀 2603

#include #include #include #include #include using namespace std;

#define lson l , m , rt << 1

#define rson m+1, r , rt << 1 | 1//寫下自己對區間操作的一些理解,首先全部的資料都是儲存在sum[rt]中的,

//可是如何理解這種儲存呢,可以參考完全二叉樹。通過l , r 的來回處理來進入不同的地方。

const int maxn = 111111;

int sum[maxn << 2];

int col[maxn << 2];

void down(int rt,int m)

}void up(int rt)

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

void update(int l,int r,int num,int l,int r,int rt)

down(rt,r-l+1);

int m = (l + r) >> 1;

if(l <= m)

update(l,r,num,lson);

if(r > m)

update(l,r,num,rson);

up(rt);

}int main()

printf("case %d: the total value of the hook is %d.\n",++ ops,sum[1]);

}return 0;

}

線段樹成段更新 hdoj 1698

題意 對乙個線段上的值進行修改,一次可以把 i,j 這個區間上的值改為1,2,或3。1 n這個區間上數字的和 思路 一道很加深對成段更新理解的題目,需要成段更新加上一點技巧具體見 update include include includeusing namespace std const int ...

hdu 1698 區間更新

基礎題 初學 include include using namespace std define lson l m rt 1 define rson m 1 r rt 1 1 const int maxn 101000 int h w n int col maxn 2 標記是否當前節點梗係 int...

hdu1698 區間更新

初寫線段樹的時候,印象最深的一道,有乙個pushdown的操作,使我的tle變成了ac 題意輸入t,然後t組資料 輸入n,m,n代表n個點上價值全是1的繩子,m代表m次操作 m行l,r,val 就是區間l,r變成val 求最後繩子總共價值 思路線段樹,懶人標記 include include inc...