牛客小白月赛4-B-博弈论 暴力

一开始看到这题,我误以为是今年美团春招的原题,想着随手A过去的。喵的,眼辖脑残,卡了一个晚上。后来经大佬提醒,子序列要连续才恍然大悟啊。接下来就是暴力枚举的时间了。

题解:

1、十进制1位数直接在输入时塞进set里面,用set是刚好去重和排序效果我都需要

2、然后暴力计算2位、3位、4位(我是一点点试的啦,我觉得数据不会太大),题解说峰顶到1W

3、然后从0开始找到set中找不到的数就是最小值了

#include <bits/stdc++.h>
using namespace std;
int a[1005],b[10];
set<int> di;

int main() {
    int n,x;
    cin >> n;
    for(int i = 0;i < n;i++) {
        cin >> a[i];
        di.insert(a[i]);
    }
    for(int i = 1;i < n;i++) {
        x = a[i-1] * 10 + a[i];
        di.insert(x);
    }
    for(int i = 2;i < n;i++) {
        x = a[i-2] * 100 + a[i-1] * 10 + a[i];
        di.insert(x);
    }
    for(int i = 3;i < n;i++) {
        x = a[i-3] * 1000 + a[i-2] * 100 + a[i-1] * 10 + a[i];
        di.insert(x);
    }
    int cnt = 0;
    for(set<int>::iterator it = di.begin();it != di.end();++it) {
        if(cnt != *it) {
            cout << cnt << endl;
            return 0;
        }
        cnt++;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/a912952381/article/details/80717446