華為機試 最高分是多少(線段樹)

2021-07-23 04:25:14 字數 1330 閱讀 6418

老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績. 

輸入描述:

輸入包括多組測試資料。

每組輸入第一行是兩個正整數n和m(0 < n <= 30000,0 < m < 5000),分別代表學生的數目和操作的數目。學生id編號從1編到n。第二行包含n個整數,代表這n個學生的初始成績,其中第i個數代表id為i的學生的成績接下來又m行,每一行有乙個字元c(只取『q』或『u』),和兩個正整數a,b,當c為'q'的時候, 表示這是一條詢問操作,他詢問id從a到b(包括a,b)的學生當中,成績最高的是多少當c為『u』的時候,表示這是一條更新操作,要求把id為a的學生的成績更改為b。

輸出描述:

對於每一次詢問操作,在一行裡面輸出最高成績.

輸入例子:

5 7

1 2 3 4 5

q 1 5

u 3 6

q 3 4

q 4 5

u 4 5

u 2 9

q 1 5

輸出例子:56

59

//最高分是多少 , 線段樹 

#include using namespace std;

int segtree[4 * 20000 + 10];

int array[20000];

int max(int a, int b)

//建樹過程

void build(int node, int begin, int end)

}//查詢過程

int inquiry(int node, int begin, int end, int left, int right)

// 節點更新

void updata(int node, int begin, int end, int ind, int value)

int m = (begin + end ) >> 1;

if (ind <= m)

updata(node * 2, begin, m, ind, value);

else

updata(node * 2 + 1 , m+1 , end , ind, value);

// 回溯更新父節點

segtree[node] = max(segtree[2 * node], segtree[2 * node + 1]);

}int main()

cout << inquiry(1, 1, n, nodea, nodeb) << endl;

} if (c == 'u')

}}

線段樹 最高分是多少

老師想知道從某某同學到某某同學當中,分數最高的是多少。現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。輸入包含多組測試資料。每組輸入第一行是兩個正整數n和m 0對於每一次詢問操作,在一行裡面輸出最高成績。5 6 1 2 3 4 5 q 1 5 u 3 6 q 3 4 q 4 ...

最高分是多少? 華為

程式設計題 最高分是多少 時間限制 1秒 空間限制 65536k 老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.輸入描述 輸入包括多組測試資料。每組輸入第一行是兩個正整數n和m 0 n 30000,0 m 5000 分別代表學生的...

華為筆試題 最高分是多少(線段樹)

老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.輸入描述 輸入包括多組測試資料。每組輸入第一行是兩個正整數n和m 0 n 30000,0 m 5000 分別代表學生的數目和操作的數目。學生id編號從1編到n。第二行包含n個整數,代表...