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