蒟蒻求助
查看原帖
蒟蒻求助
398132
爱好MC的蒟蒻楼主2021/4/26 23:01
#include <iostream>
#include <cstring>
using namespace std;
int i,j,n,m,ans,cnt,dt[100005],sum[100005];
string a;
long long hasha[1005],hashb[100005];
bool p[1005],dp[1005];
int min(int a,int b){ 
    if(a>b) return b;
	else return a; 
} 
int main(){
	cin >>n;
	for(int i=0;i<n;i++){
		cin >>a;
		for(int j=0;j<a.size();j++){
			hasha[i]+=a[j]*(a.size()-j)*(a.size()-j);
		}
	}
	cin >>m;
	for(int i=0;i<m;i++){
		cin >>a;
		for(int j=0;j<a.size();j++){
			hashb[i]+=a[j]*(a.size()-j)*(a.size()-j);
		}
        dt[i]=-1;
	}
	for(int i=0;i<n;i++){
	    for(int j=0;j<m;j++){
	    	if(hasha[i]==hashb[j]){
	    		p[i]=true;
                dt[j]=i;
	    	}
	    }
        if(p[i]==true) ans++;
	}
    cout <<ans<<endl;
    for(int i=0;i<m-ans;i++){
    	int qwq=0;
    	for(int j=i;j<m&&qwq<ans;j++){
    		if(dt[j]!=-1&&dp[dt[j]]!=true){
                if(hasha[dt[j]]==hashb[j]){
                    dp[dt[j]]=true;
                    qwq++;
                }
            }
			if(qwq==ans-1){
				sum[i]=j-i+1;
				break;
			}
    	}
    	
    }
    int cnt=99999;
	for(int i=0;i<m;i++){
    	if(sum[i]!=0) cnt=min(cnt,sum[i]);
    }
    cout <<cnt;
	return 0;
}

T两个点 A一个点 其余WA

样例和自己脚造数据都过了

感谢路过的神犇救救我

2021/4/26 23:01
加载中...