洛谷P1198 JSOI2008 最大數

2021-08-09 10:12:34 字數 1262 閱讀 7402

現在請求你維護乙個數列,要求提供以下兩種操作:

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]

rmq問題,跑了一發線段樹。。。

#include#include#include#define lson rt<<1

#define rson rt<<1|1

#define max(a,b) a>b?a:b

#define maxn 200005

using namespace std;

int m,d;

long long t=0,a[maxn<<2];

inline long long read()

while(c>='0'&&c<='9')

return date*w;

}void pushup(int rt)

void update(int l,int r,int rt,int x,long long y)

mid=l+r>>1;

if(x<=mid)update(l,mid,lson,x,y);

else update(mid+1,r,rson,x,y);

pushup(rt);

}long long query(int l,int r,int rt,int x,int y)

int main()

if(c[0]=='q')

}return 0;

}

洛谷 P1198 JSOI2008 最大數

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

洛谷 P1198 JSOI2008 最大數

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

洛谷 P1198 JSOI2008 最大數

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