洛谷 P1198 JSOI2008 最大數

2021-07-28 20:43:48 字數 1142 閱讀 7950

p1198 [jsoi2008]最大數現在請求你維護乙個數列,要求提供以下兩種操作:

1、 查詢操作。

語法:q l

功能:查詢當前數列中末尾l個數中的最大的數,並輸出這個數的值。

限制:l不超過當前數列的長度。

2、 插入操作。

語法:a n

功能:將n加上t,其中t是最近一次查詢操作的答案(如果還未執行過查詢操作,則t=0),並將所得結果對乙個固定的常數d取模,將所得答案插入到數列的末尾。

限制:n是整數(可能為負數)並且在長整範圍內。

注意:初始時數列是空的,沒有乙個數。

輸入格式:

第一行兩個整數,m和d,其中m表示操作的個數(m <= 200,000),d如上文中所述,滿足(0

接下來的m行,每行乙個字串,描述乙個具體的操作。語法如上文所述。

輸出格式:

對於每乙個查詢操作,你應該按照順序依次輸出結果,每個結果佔一行。

輸入樣例#1:

5 100

a 96

q 1a 97

q 1q 2

輸出樣例#1:

96

9396

[jsoi2008]

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int m=200005,inf=2000000000;7

intm,d,len,x,last_query;

8char

cmd;

9struct

nodet[m*5

];12

void build(int now,int l,int

r)19

int query(int now,int l,int

r)24

void update(int u,int x,int

k)30

intmain()

3140

return0;

41 }

暴力超時穩穩地,注意線段樹多開四到五倍空間、、、頭一次做省選題、、雖然、、、

洛谷P1198 JSOI2008 最大數

現在請求你維護乙個數列,要求提供以下兩種操作 1 查詢操作。語法 q l 功能 查詢當前數列中末尾l個數中的最大的數,並輸出這個數的值。限制 l不超過當前數列的長度。2 插入操作。語法 a n 功能 將n加上t,其中t是最近一次查詢操作的答案 如果還未執行過查詢操作,則t 0 並將所得結果對乙個固定...

洛谷 P1198 JSOI2008 最大數

序列兩種操作 q l 輸出末尾l個數中的最大值 q 操作用查詢區間最大值即可完成,a 操作需要能夠 add 元素。線段樹明顯可以,理解也比較簡單 這裡採用樹狀陣列維護區間最大值的 板子 來滿足這兩種操作。類封裝的最值 include cstdlib include include include i...

洛谷 P1198 JSOI2008 最大數

題目鏈結 如果還沒看題目的可以先去看一下題目 前置知識線段樹 這個題目就是兩個操作,乙個是新增資料,乙個是查詢區間最大值,但是由於資料範圍達到1e5,所以我直接想到的就是線段樹了,下面我們來看看線段樹要怎麼做。首先是建樹,由於題目中的資料有負數,負數,負數,所以大家建樹的時候一定要注意!初始化權值和...