CE求助
查看原帖
CE求助
649412
Apathy_Cul楼主2022/2/24 13:03
// ================= 必用头文件 ==========================

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

// ===================== STL ==============================

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/hash_policy.hpp>
#include <stack>
#include <queue>
#include <deque>
#include <numeric>
#include <functional>
#include <list>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <bitset>
#include <array>
#include <vector>
#include <tuple>
#include <new>
#include <string>
#include <valarray>

using namespace std;

// ======================== 快读快写 ==========================

inline int read() {
    int op = 1, x;
    char ch;
    while (! isdigit(ch = getchar())) {
        if (ch == '-')
            op = -1;
    }
    x = ch ^ 48;
    while (isdigit(ch = getchar())) {
        x = (x << 3) + (x << 1) + (ch ^ 48);
    }
    return x * op;
}

char s[1000010];
int top;

inline void write(int x, char db = '\n') {
    if (x < 0) {
        s[top ++] = '-';
        x = -x;
    }
    char t[20] = {0};
    int ttop = 0;
    do {
        t[ttop ++] = x % 10;
        x /= 10;
    } while (x);
    for (int i = ttop - 1; i >= 0; i --)
        s[top ++] = t[i] ^ 48;
    s[top ++] = db;
}

inline void write(char *S, char db = '\n') {
    int len = strlen(S);
    for (int i = 0; i < len; i ++)
        s[top ++] = S[i];
    s[top ++] = db;
}

char ss[1010];

signed main() {
    int T = read();
    while (T --) {
        int n = read();
        scanf ("%s", ss);
        __gnu_pbds::gp_hash_table <char, int> mp;
        char id = 'a';
        for (int i = 0; i < (int) strlen(ss); i ++) {
            mp[ss[i]] ++;
            while (mp[ss[id]])
                id ++;
            if (! islower(id))
                break;
        }
        if (islower(id)) {
            write(id);
            continue ;
        }
        char sss[5] = {0};
        memset (sss, '\0', sizeof sss);
        sss[0] = 'a';
        sss[1] = 'a';
        __gnu_pbds::gp_hash_table <pair <char, char>, int> mp2;
        for (int i = 0; i < (int) strlen(ss) - 1; i ++) {
            mp2[make_pair(ss[i], ss[i + 1])] ++;
            while (mp2[make_pair(sss[0], sss[1])]) {
                sss[1] ++;
                if (! islower(ss[1])) {
                    sss[1] = 'a';
                    sss[0] ++;
                    if (! islower(sss[0]))
                        goto next_pre;
                }
            }
        }
        write(sss);
        continue ;
        next_pre:;
        __gnu_pbds::gp_hash_table <pair <pair <char, char>, char>, int> mp3;
        memset (sss, '\0', sizeof sss);
        sss[0] = 'a';
        sss[1] = 'a';
        sss[2] = 'a';
        for (int i = 0; i < strlen(ss) - 2; i ++) {
            mp3[make_pair(make_pair(sss[i], sss[i + 1]), sss[i + 2])] ++;
            while (mp3[make_pair(make_pair(sss[i], sss[i + 1]), sss[i + 2])]) {
                sss[i + 2] ++;
                if (! islower(sss[i + 2])) {
                    sss[i + 1] ++;
                    sss[i + 2] = 'a';
                    if (! islower(sss[i + 1])) {
                        sss[i] ++;
                        sss[i + 1] = 'a';
                    }
                }
            }
        }
        write(sss);
    }
    puts(s);
    return 0;
}

2022/2/24 13:03
加载中...