2026/1/10 2:40:09
网站建设
项目流程
福州专业做网站,关于外贸的网站,宁波seo营销技巧,长沙好的网站建设品牌题目描述 给定 n 个模式串 s1,s2,…,sn 和 q 次询问#xff0c;每次询问给定一个文本串 ti#xff0c;请回答 s1∼sn 中有多少个字符串 sj 满足 ti 是 sj 的前缀。 一个字符串 t 是 s 的前缀当且仅当从 s 的末尾删去若干个#xff08;可以为 0 个#xf…题目描述给定 n 个模式串 s1,s2,…,sn 和 q 次询问每次询问给定一个文本串 ti请回答 s1∼sn 中有多少个字符串 sj 满足 ti 是 sj 的前缀。一个字符串 t 是 s 的前缀当且仅当从 s 的末尾删去若干个可以为 0 个连续的字符后与 t 相同。输入的字符串大小敏感。例如字符串Fusu和字符串fusu不同。输入格式本题单测试点内有多组测试数据。输入的第一行是一个整数表示数据组数 T。对于每组数据格式如下第一行是两个整数分别表示模式串的个数 n 和询问的个数 q。接下来 n 行每行一个字符串表示一个模式串。接下来 q 行每行一个字符串表示一次询问。输出格式按照输入的顺序依次输出各测试数据的答案。对于每次询问输出一行一个整数表示答案。输入输出样例输入 #1复制3 3 3 fusufusu fusu anguei fusu anguei kkksc 5 2 fusu Fusu AFakeFusu afakefusu fusuisnotfake Fusu fusu 1 1 998244353 9输出 #1复制2 1 0 1 2 1说明/提示数据规模与约定对于全部的测试点保证 1≤T,n,q≤105且输入字符串的总长度不超过 3×106。输入的字符串只含大小写字母和数字且不含空串。说明std 的 IO 使用的是关闭同步后的 cin/cout本题不卡常。#includebits/stdc.h using namespace std; const int N3e610; int tr[N][62]; int p[N]; int idx; int T,n,q; string s; int get_num(char x) { if(xaxz) return x-a; else if(xAxZ) return x-A26; else return x-052; } void insert(string s) { int cur0; p[cur]; for(auto x:s) { int pathget_num(x); if(tr[cur][path]0) tr[cur][path]idx; cur tr[cur][path]; p[cur]; } } int find_pre(string s) { int cur 0; for(auto x: s) { int pathget_num(x); if(tr[cur][path]0) return 0; curtr[cur][path]; } return p[cur]; } int main() { cinT; while(T--) { //清空 for(int i0;iidx;i) { for(int j0;j62;j) { tr[i][j]0; } } for(int i0;iidx;i) p[i]0; idx0; cinnq; while(n--) { cins; insert(s); } while(q--) { cins; coutfind_pre(s)endl; } } }