比赛 20241021 评测结果 AAAAAAAAAAAAAA
题目名称 子序列 最终得分 100
用户昵称 darkMoon 运行时间 0.096 s
代码语言 C++ 内存使用 6.71 MiB
提交时间 2024-10-21 08:43:12
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. auto IN = freopen("subsequence.in", "r", stdin);
  5. auto OUT = freopen("subsequence.out", "w", stdout);
  6. auto mread = [](){int x;scanf("%lld", &x);return x;};
  7. const int N = 1e5 + 5;
  8. char s[N], b[55];
  9. int to[N][30], n;
  10. signed main(){
  11. scanf("%s", s + 1);
  12. n = strlen(s + 1);
  13. int la[30];
  14. for(int i = 0; i < 26; i ++){
  15. la[i] = n + 1;
  16. }
  17. for(int i = n; i >= 1; i --){
  18. la[s[i] - 'a'] = i;
  19. for(int j = 0; j < 26; j ++){
  20. to[i][j] = la[j];
  21. }
  22. }
  23. for(int j = 0; j < 26; j ++){
  24. to[0][j] = la[j];
  25. }
  26. int t = mread();
  27. while(t --){
  28. scanf("%s", b + 1);
  29. int m = strlen(b + 1);
  30. int x = 0;
  31. for(int i = 1; i <= m; i ++){
  32. x = to[x][b[i] - 'a'];
  33. if(x == n + 1){
  34. printf("No\n");
  35. break;
  36. }
  37. }
  38. if(x <= n){
  39. printf("Yes\n");
  40. }
  41. }
  42. return 0;
  43. }