I Hate It 線段樹 單點修改 區間查詢

2022-09-10 16:06:45 字數 1573 閱讀 3211

time limit: 9000/3000 ms (j**a/others)    memory limit: 32768/32768 k (j**a/others)

total submission(s): 40034    accepted submission(s): 15898

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

這讓很多學生很反感。

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

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

在每個測試的第一行,有兩個正整數 n 和 m ( 0對於每一次詢問操作,在一行裡面輸出最高成績。

5 61 2 3 4 5

q 1 5

u 3 6

q 3 4

q 4 5

u 2 9

q 1 55 6

5 9

#include#include#include#includeusing namespace std;

const int mx = 200010; //注意最大值

struct node tree[mx<<2];

int n, q, x, y;

void pushup(int p)

void built(int p, int l, int r)

int mid = l + r >> 1;

built(p << 1, l, mid);

built(p << 1 | 1, mid + 1, r);

pushup(p);

}void update(int p, int a, int a1)

int mid = tree[p].l + tree[p].r >> 1;

if (a <= mid)

update(p << 1, a, a1);

else

update(p << 1 | 1, a, a1);

pushup(p);

}int querymax(int p, int l, int r)

int mid = tree[p].l + tree[p].r >> 1;

if (l <= mid)res=max(res,querymax(p << 1, l, r));

if (r > mid)res = max(res, querymax(p << 1 | 1, l, r));

return res;

}//int querymin(int p, int l, int r)

//// int mid = tree[p].l + tree[p].r >> 1;

// if (l <= mid)res = min(res, querymin(p << 1, l, r));

// if (r > mid)res = min(res, querymin(p << 1 | 1, l, r));

// return res;

//}int main()

} return 0;

}

線段樹單點修改區間查詢

這是一道模板題。給定數列 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,表示數列長度和詢...

I Hate it 線段樹單點更新

problem description 很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。input 本題目包含多組測試,請處...

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

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