求助CF1295C
  • 板块灌水区
  • 楼主lipeixuan0925
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/8/8 18:23
  • 上次更新2023/11/3 05:08:50
查看原帖
求助CF1295C
398271
lipeixuan0925楼主2023/8/8 18:23

RT,为什么我的代码是RE,学校CCR测出来是80分,进程被堵塞

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
string s,t;
int T;
long long c[N][50],b[N],cnt,num,ans;
int main()
{
//  freopen("string.in","r",stdin);
//  freopen("string.out","w",stdout);
    scanf("%d",&T);
    for (int l=1;l<=T;l++) {
    cin>>s>>t;
    for (int i=0;i<s.length();i++)
        b[s[i]-'a']++;
    bool o=0;
    for (int i=0;i<t.length();i++)
        if (b[t[i]-'a']==0) {
            printf("-1\n");
            o=1;
            break;
        }
    if (o) continue;
    for (int i=s.length()-1;i>0;i--)
        c[i-1][s[i]-'a']=i;
    for (int i=s.length()-2;i>=0;i--)
        for (int j=0;j<26;j++)
            if (c[i][j]==0) 
                c[i][j]=c[i+1][j];
    num=0;
    ans=0;
    while (num<t.length()) {
        cnt=0;
        ans++;
        if (s[0]==t[num]) {
            num++;
        }
        while (c[cnt][t[num]-'a']!=0) {
            cnt=c[cnt][t[num]-'a'];
            num++;
        }
    }
    printf("%lld\n",ans);
    }
    return 0;
}
2023/8/8 18:23
加载中...