WA on #7 求助
查看原帖
WA on #7 求助
840824
superLouis楼主2024/11/18 22:36
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e5 + 10;
const int maxm = 1e4 + 10;
int n, m, a[maxn], cnt[maxm], mx;
map<string, int> mp;
signed main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        string s; cin >> s;
        mp[s] = i;
    }
    cin >> m;
    for (int i = 1; i <= m; i++) {
        string s; int id; cin >> s;
        if (mp.count(s)) {
            id = mp[s];
            cnt[id]++;
            if (cnt[id] == 1) mx++;
        } else id = 0;
        a[i] = id;
    }
    cout << mx << "\n";
    memset(cnt, 0, sizeof(cnt));
    int st = 1, ed = m;
    for (int num = 0, r = 0, l = 1; l <= m; l++) {
        if (l != 1) if (a[l - 1] != 0) if (--cnt[a[l - 1]] == 0) --num;
        while (num < mx && r < m) {
            ++r;
            if (a[r] != 0) if (++cnt[a[r]] == 1) ++num;
        }
        if (num == mx) if (r - l < ed - st) {
            st = l; ed = r;
        }
    }
    cout << ed - st + 1 << "\n";
    return 0;
}

不知为何,求 DALAO 帮助 QwQ

Link

2024/11/18 22:36
加载中...