hdu1698 區間更新

2022-05-06 21:27:09 字數 1316 閱讀 3193

初寫線段樹的時候,印象最深的一道,有乙個pushdown的操作,使我的tle變成了ac

題意輸入t,然後t組資料

輸入n,m,n代表n個點上價值全是1的繩子,m代表m次操作

m行l,r,val  就是區間l,r變成val

求最後繩子總共價值

思路線段樹,懶人標記

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define mem(k,b) memset(k,b,sizeof(k))

#define ll long long

#define ls (x)<<1

#define rs (x)<<1|1

#define lson ls,l,mid

#define rson rs,mid+1,r

using

namespace

std;

const

int maxn = 100010

;int

t, n, m, q, p, z;

int tree[maxn << 2], add[maxn << 2

];void pushup(int

x) void pushdown(int x, int

len)

}void build(int x, int l, int

r)

int mid = (l + r) >> 1

; build(lson); build(rson);

pushup(x);

}void xiugai(int x, int l, int r, int l1, int r1,int

zhi1)

pushdown(x, r - l + 1

);

int mid = (l + r) >> 1

;

if (r1<=mid)

else

if (l1>mid)

else

pushup(x);

}int

main()

printf(

"case %d: the total value of the hook is %d.\n

",c++,tree[1

]); }

return0;

}

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

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

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

HDU 1698 線段樹區間更新

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