奇怪的问题,蒟蒻求助?
查看原帖
奇怪的问题,蒟蒻求助?
524906
刘辰雨楼主2021/11/16 14:02

第七个点始终A不了 q*q

#include<bits/stdc++.h>
using namespace std;
map<string,int> word;
long long num[100003];
long long n , m , l , r , sum , len ,maxn = -1 , mini = 2147463646;
string a, s[100003];
int main()
{
	scanf("%d" , &n);
	for(int i = 1 ; i<= n ; i++ )
	{
		cin>>a;
		word[a] = i;
	}
	scanf("%d" , &m);
	for(int i = 1 ; i <= m ; i++ )cin>>s[i];
	l = 1 , r = 1;
	while(r <= m)
	{
		if(word[s[r]] != 0&&num[word[s[r]]] == 0)sum++;
		num[word[s[r]]]++;
		r++;
	}
	maxn=sum;
	memset(num,0,sizeof(num));
	l = 1 , r = 1;
	sum=0;
	while(r <= m)
	{
		
		if(word[s[r]] != 0)
		{
			if(num[word[s[r]]] == 0)
			{
				sum++;
			}
			num[word[s[r]]] ++ ;
		}	
		while( word[s[l]] == 0||(num[word[s[l]]] > 1 &&word[s[l]] != 0)) 
		{
			if(l>=r)break;
			num[word[s[l]]] --;
			l++;
		}
		len = r-l+1;
		if(sum == maxn)mini = min(mini ,len);
		r++;
	}
	if(maxn == 0)mini == 0; 
	cout<<maxn<<endl<<mini;
	return 0;
}
2021/11/16 14:02
加载中...