蒟蒻求助,样例都能过但交上去都输出0
查看原帖
蒟蒻求助,样例都能过但交上去都输出0
574890
zfy2006楼主2022/4/9 21:24
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int base=137,mod=1e9+7;
int k,s[100005],f[1005][100005];
char ss[100005],s1[100005];
inline int ha(char sd[]){
	int l=strlen(sd);
	int sum=0;
	for(int i=0;i<l;i++){
		sum*=base;
		sum+=sd[i];
	}
	return sum;
}
inline int get(int l,int r){
	return s[r]-s[l-1]*pow(base,r-l+1);
}
signed main(){
	cin>>k;
	cin>>(ss+1);
	int len=strlen(ss+1);
	for(int i=0;i<=len;i++){
		f[0][i]=1;
		if(i>0) s[i]=s[i-1]*base+ss[i];
	}
	for(int i=1;i<=k;i++){
		int t;
		cin>>t;
		while(t--){
			cin>>(s1+1);
			int l=strlen(s1+1);
			int sum=ha(s1+1);
			for(int j=0;j+l<=len;j++){
				if(sum==get(j+1,j+l)){
		//			cout<<i<<' '<<j<<' '<<l<<endl;
					f[i][j+l]+=f[i-1][j];
					f[i][j+l]%=mod;
				}
			}
		}
	}
	int ans=0;
	for(int i=0;i<=len;i++){
		ans+=f[k][i];
		ans%=mod;
	}
	cout<<ans;
	return 0;
}
2022/4/9 21:24
加载中...