求助:为什么我会RE
查看原帖
求助:为什么我会RE
398271
lipeixuan0925楼主2023/8/8 16:27

学校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 16:27
加载中...