66pts MLE求调
查看原帖
66pts MLE求调
929151
xxr___楼主2023/12/15 19:27
#include<iostream>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
gp_hash_table<string,bool> f[6];
const int N=6;
string s[N];
int len[N],n;

bool check(int mid){
	
	for(int i=0;i<=len[1]-mid;i++){
		string x="";
		for(int j=i;j<i+mid;j++){
			x+=s[1][j]; 
		}
		for(int k=2;k<=n;k++){
			if(!f[k][x]){
				goto fl;
			}
		}
		return 1;
		fl:;
	}
	return 0;
}

int main(){
	
	cin >> n;
	
	for(int i=1;i<=n;i++){
		cin >> s[i]; 
		len[i] = s[i].size();
	}
	
	for(int i=1;i<=n;i++){
		for(int j=0;j<len[i];j++){
			string x="";
			for(int k=j;k<len[i];k++){
				x+=s[i][k];
				f[i][x]=1;
			}
		}
	}
	//预处理HASH 
	
	int l = 0, r = len[1]<<1 ,ans = 0;
	
	while(l<=r){
		int mid = (l+r)>>1;
		
		if(check(mid)){
			ans=mid;
			l=mid+1;
		}else{
			r=mid-1;
		}
	}
	
	cout << ans;
	return 0;
}
2023/12/15 19:27
加载中...