被水题切了求调,马蜂良好
查看原帖
被水题切了求调,马蜂良好
933802
ICU152_lowa_IS8楼主2024/8/25 23:08

RT,感觉思路没什么问题

#include<bits/stdc++.h>
#define int long long
using namespace std;
map<string,bool>mp;
map<string,bool>mppp;
map<string,int>mpp;
string a[1000005];
signed main(){
	int n,m;
	cin>>n;
	for(int i=1;i<=n;i++){
		string s;
		cin>>s;
		mp[s]=true;
	}
	cin>>m;
	int cnt=0;
	for(int i=1;i<=m;i++){
		cin>>a[i];
		string s=a[i];
		if(!mppp[s]){
			mppp[s]=true;
			if(mp[s])cnt++;
		}
	}
	int l=1,r=0,cc=0,ans=INT_MAX;
	while(r<m){
		mpp[a[++r]]++;
		if(mp[a[r]]==1)cc++;
		while(mpp[a[l]]>1||mp[a[l]]==0&&l<=r){
			mpp[a[l]]--;
			l++;
		}
		if(cc==cnt){
			ans=min(ans,r-l+1);
		}
	}
	cout<<cnt<<endl<<ans;
	return 0;
}

2024/8/25 23:08
加载中...