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行,每行有三個正整數...