HDU1854 線段樹 單點修改區間最大值

2021-09-13 14:38:48 字數 1439 閱讀 2473

很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。

這讓很多學生很反感。

不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。

input

本題目包含多組測試,請處理到檔案結束。

在每個測試的第一行,有兩個正整數 n 和 m ( 0

5 6

1 2 3 4 5

q 1 5

u 3 6

q 3 4

q 4 5

u 2 9

q 1 5

sample output

565

9

hint

huge input,the c function

scanf

() will work better than cin

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 200000;

struct nood tree[maxn * 4 + 5];

int n, m;

int a[maxn + 5];

void build(int l, int r, int x)

int mid = (l + r) / 2;

build(l, mid, x * 2);

build(mid + 1, r, x * 2 + 1);

tree[x].max = max(tree[x * 2].max, tree[x * 2 + 1].max);

}void pushdown(int x)

}void update(int l, int r, int add, int x)

pushdown(x);

int mid = (tree[x].l + tree[x].r) / 2;

if(l <= mid)update(l, r, add, x * 2);

if(r > mid)update(l, r, add, x * 2 + 1);

tree[x].max = max(tree[x * 2].max, tree[x * 2 + 1].max);

}int query(int l, int r, int x)

int main()

}return

0;}

posted @

2018-07-11 11:26

呵呵!!! 閱讀(

...)

編輯收藏

線段樹單點修改區間查詢

這是一道模板題。給定數列 a 1 a 2 a n 你需要依次進行 qq 個操作,操作有兩類 1 i x 給定 i,x,將 a i 加上 x 2 l r 給定 l,r,求 ri la i 的值 換言之,求 a l a l 1 a r 的值 input 第一行包含 2 個正整數 n,q,表示數列長度和詢...

HDU1166 線段樹 單點修改區間查詢

c國的死對頭a國這段時間正在進行軍事演習,所以c國間諜頭子derek和他手下tidy又開始忙乎了。a國在海岸線沿直線布置了n個工兵營地,derek和tidy的任務就是要監視這些工兵營地的活動情況。由於採取了某種先進的監測手段,所以每個工兵營地的人數c國都掌握的一清二楚,每個工兵營地的人數都有可能發生...

線段樹模板(單點修改 區間查詢)

1547 例 1 區間和 時間限制 1000 ms 記憶體限制 524288 kb 提交數 2072 通過數 639 題目描述 給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。輸入 輸入資料第一行包含兩個正整數n,m n 100000,m 500000 以下是m行,每行有三個正整數...