hdu 1698 區間更新

2021-06-09 15:33:05 字數 869 閱讀 4141

基礎題 初學

#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 sum[maxn<<2];//區間和

void pushup(int rt)

void pushdown(int rt,int m)

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

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

//在下一次update的時候(當要查詢到當前節點以下的時候)

//需要pushdown這樣就相當於延時炒作了,當不訪問下面的時候就只用在根節點記錄就可以了

pushdown(rt , r - l + 1);

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

if (l <= m) update(l , r , c , l , m , rt << 1);

if (r > m) update(l , r , c , m + 1 , r , rt << 1 | 1);

pushup(rt);

}int main()

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

} return 0;

}

hdu1698 區間更新

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

線段樹 HDU 1698 區間set,區間查詢

就是ba區間的每乙個值都變成某個數。poj 3468 區間add,區間查詢 include include includeusing namespace std 每當有add加到i節點上,不會去更新i節點的sum.也就是說如果要查詢區間 1,n 的sum值,既要考慮sum i 的值,也要考慮add ...

HDU 1698 線段樹區間更新

之前一直覺得自己線段樹敲得很熟練,然後。某天。是的,就是我的資料結構周開始的時候我發現。我特麼才會單點更新是怎麼回事!只會區間查詢是腫麼回事!摔!恩。就是表達一下弱渣的心情。區間更新,用到延遲操作。延遲操作應該是這麼回事。線段樹的優越性就是體現在,第一是二分查詢,第二是區間操作。當我們需要多次對區間...