整段修改剛開始還求前後兩值的差,卡了一下發現直接改就行了。
題意和題解:線段樹板子區間修改區間查詢,由於本題查一整段所以無需查詢操作
**:
//修改區間為同乙個值
#include
#include
#include
using namespace std;
const
int n =
1e5+10;
int t, n, m;
struct nodetr[n <<2]
;void
pushup
(int u)
void
pushdown
(int u)
}void
build
(int u,
int l,
int r);if
(l == r)
return
;int mid = l + r >>1;
build
(u <<
1, l, mid)
,build
(u <<1|
1, mid +
1, r)
;pushup
(u);
}void
modify
(int u,
int l,
int r,
int x)
pushdown
(u);
int mid = tr[u]
.l + tr[u]
.r >>1;
if(l <= mid)
modify
(u <<
1, l, r, x);if
(r > mid)
modify
(u <<1|
1, l, r, x)
;pushup
(u);
}int
main()
printf
("case %d: the total value of the hook is %d.\n"
, g, tr[1]
.sum);}
return0;
}
HDU 1698 線段樹區間修改
一道線段樹區間替換的模板題 練習一下notonlysuccess的線段樹模板 注意注意!這兩個運算符號的優先順序非常低,只要寫到就要加括號,調了兩個小時的血淚啊 include include define lson l,m,rt 1 define rson m 1,r,rt 1 1 define ...
hdu 1698 線段樹區間修改
題目鏈結 解題報告 區間修改的模板題目。需要打乙個set標記,表示區間 l,r 被修改為v.在這道題目裡。一開始所有結點被賦值為1,之後給q個修改,把 l,r 修改為1,2,或3.最後求區間和。我的寫法採用了劉汝佳在訓練指南中使用的寫法。參考 include include include incl...
hdu1698(線段樹 區間修改 求和)
題意 有乙個區間s 1,n 每一節si的初始價值為1。定義操作 x y val,將區間 x,y 中的每乙個小節的價值改為val。問 經過q次操作後總區間的價值是多少。1 n 1e5 0 q 1e5 演算法 資料結構 線段樹注意使用 long long scanf i64d 3 10e5我覺得不需要長...