牛牛現在有乙個長度為 n 的序列 a1,a2,…,an。現在牛牛有 q次詢問,每次想詢問區間 [l,r]的 mex 是什麼。
乙個序列的 mex 定義為最小未出現的自然數。
第一行兩個整數 n,q表示序列長度和詢問次數。
接下來一行 n個非負整數,表示序列 aia_iai。
接下來 q行,每行兩個整數 li,ri表示詢問的區間。
q行,每行表示詢問的答案。
示例1複製
5 24 3 0 1 2
2 41 5
複製
25
n,q≤105,0≤ain,q≤105,0≤ai區間[l,r]的為左邊區間[1,l]的最小值,和區間[r+1,n]的最小值再取乙個最小值所有可以維護正向最小值和反向最小值
#include#include#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int maxn=1e6+100
;int
pre[maxn];
intprr[maxn];
inta[maxn];
intmain()
for(int i=n;i>=1;i--)
intl,r;
for(int i=1;i<=m;i++)
}
牛客網 旋轉陣列的最小值
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。第一種思路是提交了的 中的最上邊的幾種解法 第二種思路來自於一本書,總體是...
求m區間的最小值
乙個含有n項的數列 n 2000000 求出每一項前的m個數到它這個區間內的最小值。若前面的數不足m項則從第1個數開始,若前面沒有數則輸出0。第一行兩個數n,m。第二行,n個正整數,為所給定的數列。n行,第i行的乙個數ai,為所求序列中第i個數前m個數的最小值。6 27 8 1 4 3 207 71...
區間最大最小值 ST表
這是一道st表經典題 靜態區間最大值 請注意最大資料時限只有0.8s,資料強度不低,請務必保證你的每次查詢複雜度為 o 1 o 1 若使用更高時間複雜度演算法不保證能通過。如果您認為您的 時間複雜度正確但是 tle,可以嘗試使用快速讀入 inline int read while isdigit c...