题目描述 Description
有一个长度为 n n n的数组 { \{ { a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an } \} }。 m m m次询问,每次询问一个区间内最小没有出现过的自然数。
输入 Input
第一行 n n n, m m m。
第二行为 n n n个数。
从第三行开始,每行一个询问 l l l, r r r。
输出 Output
一行一个数,表示每个询问的答案。
样例输入 Sample Input
5 5
2 1 0 2 1
3 3
2 3
2 4
1 2
3 5
样例输出 Sample Output
1
2
3
0
3
限制 Limits
对于 30 30 30 % \% %的数据:
1 ≤ n , m ≤ 1000 1≤n,m≤1000 1≤n,m≤1000
对于 100 100 100 % \% %的数据:
1 ≤ n , m ≤ 200000 1≤n,m≤200000 1≤n,m≤200000
0 ≤ a i ≤ 1 0 9 0≤a_i≤10^9 0≤ai≤109
1 ≤ l ≤ r ≤ n 1≤l≤r≤n 1≤l≤r≤n
Time Limit : 2 s 2s 2s & Memory Limit : 128 M B 128MB 128MB
时间限制是猜的…也不知道多少组数据…
只有查询,没有修改的问题,不要求在线,直接莫队…
诶
a
i
a_i
ai怎么这么大?可是并不需要离散化
a
i
a_i
ai。
why?
想象一种极端情况,数列
n
n
n个数,其中的所有数都大于
n
n
n,询问最小没出现的自然数,自然是
0
0
0。
再来一种,数列
n
n
n个数,其中前
n
−
1
n-1
n−1个为
1
1
1到
n
−
1
n-1
n−1,最后
1
1
1个大于等于
n
n
n,那么答案应该为
0
0
0。
第三种,数列
n
n
n个数,为
0
0
0到
n
−
1
n-1
n−1,答案为
n
n
n。
所以,如果有一些数大于
n
n
n,其余小于等于
n
n
n,那么大于
n
n
n的部分对答案没有影响,答案只会取决于小于等于
n
n
n的部分。
假如要求在线呢…
很多人写主席树,本蒟蒻并不会…
时间复杂度
O
(
T
n
)
O(T\sqrt n)
O(Tn)
主席树是
O
(
T
log
2
n
)
O(T\log_2 n)
O(Tlog2n)的
Code
探讨了在一个给定数组中进行多次区间查询,寻找区间内未出现的最小自然数的方法。介绍了适用于不同数据规模的算法策略,包括离线处理方式莫队算法,并对比了主席树的时间复杂度。
3480

被折叠的 条评论
为什么被折叠?



