样例过了,但全MLE,玄关求调
查看原帖
样例过了,但全MLE,玄关求调
1030559
tzzl3035楼主2024/12/17 12:58

rt

#include <bits/stdc++.h>

  int nex[3000003][100], num[3000003], cnt;

int main() {
  auto ins = [&](std::string s) -> void {
    int nod = 0;
    for(int i = 0; i < s.size(); ++i) {
      int c = s[i] - '0';
      if(!nex[nod][c]) 
        nex[nod][c] = ++cnt;
      nod = nex[nod][c];
      num[nod] += 1;
    }
  };
  auto fin = [&](std::string s) -> int {
    int nod = 0;
    for(int i = 0; i < s.size(); ++i) {
      int c = s[i] - '0';
      if(!nex[nod][c]) 
        return 0;
      nod = nex[nod][c];
    }
    return num[nod];
  };
  int T;
  std::cin >> T;
  for(; T; --T) {
    int n, q;
    std::cin >> n >> q;
    memset(nex, 0, sizeof(nex));
    memset(num, 0, sizeof(num));
    cnt = 0;
    for(int i = 0; i < n; ++i) {
      std::string s;
      std::cin >> s;
      ins(s);
    }
    for(int i = 0; i < q; ++i) {
      std::string s;
      std::cin >> s;
      std::cout << fin(s) << '\n';
    }
  }
}
2024/12/17 12:58
加载中...