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