比赛 20241021 评测结果 AAAAAAAAAAAATT
题目名称 子序列 最终得分 86
用户昵称 wdsjl 运行时间 4.037 s
代码语言 C++ 内存使用 3.46 MiB
提交时间 2024-10-21 11:09:00
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

bool ck(const string& s, const string& t) {
    unordered_map<char, vector<int>> pos;
    for (int i = 0; i < t.length(); ++i) {
        pos[t[i]].push_back(i);
    }
    int lastPos = -1;
    for (char c : s) {
        if (pos.find(c) == pos.end()) {
            return false;
        }
        auto& ps = pos[c];
        auto it = upper_bound(ps.begin(), ps.end(), lastPos);
        if (it == ps.end()) {
            return false;
        }
        lastPos = *it;
    }
    return true;
}

int main() {
	freopen("subsequence.in","r",stdin);
	freopen("subsequence.out","w",stdout);
    string A;
    cin >> A;
    int M;
    cin >> M;
    for (int i = 0; i < M; i++) {
        string Bi;
        cin >> Bi;
        if (ck(Bi, A)) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
    return 0;
}