COJ 1003 WZJ的資料結構(三)ST表

2022-05-23 03:09:18 字數 1290 閱讀 7619

wzj的資料結構(三)

難度級別:b; 執行時間限制:3000ms; 執行空間限制:51200kb; **長度限制:2000000b

試題描述

請你設計乙個資料結構,完成以下功能:

給定乙個大小為n的整數組a,m次詢問。每次詢問給你i,j兩個引數,求ai至aj中最大的數。

輸入第一行為兩個正整數n,m。

第二行為n個整數ai。

接下來m行為詢問。 

輸出對於每個詢問輸出答案。 

輸入示例

6 51 -2 3 4 -6 7

1 21 1

1 51 6

4 6輸出示例11

477其他說明

1<=n<=10000

1<=m<=1000000

-10^9<=ai<=10^9

1<=l<=r<=n

st表是處理rmq問題中詢問較多的利器。注意初始化的log[0] = -1,同時記得init(現在我都不敢寫成函式了要不肯定忘。。。)

1 #include2 #include3 #include4 #include5 #include6 #include7

#define pau putchar(' ')

8#define ent putchar('\n')

9using

namespace

std;

10const

int maxn=100000+10,inf=-1u>>1;11

int d[maxn][20

],log[maxn],n,q;

12 inline int

read()

15while(isdigit(ch))x=10*x+ch-'

0',ch=getchar();

16return x*=sig;17}

18 inline void write(int

x)if(x<0)putchar('

-'),x=-x;

20int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;21

for(int i=len-1;i>=0;i--)putchar(buf[i]+'

0');return;22

}23int query(int x,int

y)27

void

init()

35void

work()

41return;42

}43void

print()

46int main()

COJ1013 WZJ的資料結構(十三)

這道題有這樣乙個解法 首先把邊依次加到圖中,若當前這條邊與圖中的邊形成了環,那麼把這個環中最早加進來的邊彈出去 並將每條邊把哪條邊彈了出去記錄下來 ntr i j,特別地,要是沒有彈出邊,ntr i 0 這個顯然是可以用lct來弄的對吧。然後對於每個詢問,我們的答案就是對l r中ntr小於l的邊求和...

COJ0985 WZJ的資料結構(負十五)

coj0985 wzj的資料結構 負十五 試題描述 chx有乙個問題想問問大家。給你乙個長度為n的數列a,請你找到兩個位置l,r,使得a l a l 1 a r 中沒有重複的數,輸出r l 1的最大值。以上是附中聯賽加試的一道題。wzj覺得這道題太水了,改了改題目 wzj有乙個問題想問問大家。給你乙...

COJ0989 WZJ的資料結構(負十一)

coj0989 wzj的資料結構 負十一 試題描述 給出以下定義 1.若子串行 l,r 的極差 最大值 最小值 m,則子串行 l,r 為乙個均勻序列。2.均勻序列 l,r 的權值為sum l,r 即序列的元素和。現在給你乙個長度為n的整數序列a,請你求出權值前k大的均勻序列,輸出k行為它們的權值。輸...