码迷,mamicode.com
首页 > 其他好文 > 详细

2019 ICPC 南昌网络赛 - Subsequence (子串判断,预处理,超时)

时间:2020-01-16 22:24:31      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:tag   字符串   网络赛   main   scanf   题意   ++   网络   max   

?? ?? ??

题意:一个字符串s,t个字符串p,判断p是不是s的子序列

预处理出对于字符串s,每个位置i之后第一个字母x的位置,匹配子序列的时候就相当于在母串上往后跳,如果跳到母串末尾,子序列还没有结束,匹配失败。

然而!超时了QAQ,只能过八组样例,网上也只能找到过九组的,,,希望有哪位大神路过指点一下了

int tag[33],nxt[MAXN][30];
char s[MAXN],p[MAXN];
void init()
{
    int n=strlen(s);
    for(int j=0;j<='z'-'a';++j) tag[j]=n;
    for(int i=n-1;i>=0;--i)
    {
        rep(j,'z'-'a'+1) nxt[i][j]=tag[j];
        tag[s[i]-'a']=i;
    }
}
signed main()
{
    scanf("%s",s);init();
    int t;scanf("%d",&t);
    while(t--)
    {
        scanf("%s",p);
        int k=0,flag=1,n=strlen(p);
        rep(i,n)
        {
            if(i==0) k=tag[p[i]-'a'];
            else k=nxt[k][p[i]-'a'];
            if(k==(int)strlen(s))  {flag=0;break;}
        }
        if(flag) puts("YES");
        else puts("NO");
    }
    return 0;
}

2019 ICPC 南昌网络赛 - Subsequence (子串判断,预处理,超时)

标签:tag   字符串   网络赛   main   scanf   题意   ++   网络   max   

原文地址:https://www.cnblogs.com/Herlo/p/12203333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!