牛牛的mex

链接:https://ac.nowcoder.com/acm/contest/7079/A
思路:
让求在这个区间的最小未出现的最小自然数,那么可以反向思维来求不在这个区间出现的最小自然数。那么维护一个前缀和后缀最小值即可。
代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int a[maxn];
int sm[maxn], bm[maxn];
int main()
{
    int n, q;
    cin >> n >> q;
    sm[0] = n; bm[n+1] = n;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        sm[i] = min(sm[i-1], a[i]);
    }
    for(int i = n; i >= 1; i--){
        bm[i] = min(bm[i+1], a[i]);
    }
    int l, r;
    for(int i = 1; i <= q; i++){
        cin >> l >> r;
        cout << min(sm[l-1], bm[r+1]) << endl;
    }
}
全部评论

相关推荐

10-11 15:42
皖西学院 Java
青鱼LINK:我硕士,也是java0面试,吾道不孤
点赞 评论 收藏
分享
Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务