HDU1698 線段樹修改區間(SB行為 )

2021-10-03 11:14:18 字數 1165 閱讀 8120

整段修改剛開始還求前後兩值的差,卡了一下發現直接改就行了。

題意和題解:線段樹板子區間修改區間查詢,由於本題查一整段所以無需查詢操作

**:

//修改區間為同乙個值  

#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我覺得不需要長...