WA0分求助,其他oj上是100分,洛谷0分
查看原帖
WA0分求助,其他oj上是100分,洛谷0分
753640
封禁用户楼主2023/8/14 15:08

蒟蒻求助

自己学校的oj是100洛谷是wa,0分

#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;//储存要背的 
map<string,int> t;//储存实际有用的桶以及目前区间l~r内的元素 
int n,m;
const int N=1e5+10;
string s[N];
string str;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>str;
		mp[str]=1;
	}
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>s[i];
		if(mp[s[i]]) t[s[i]]++;
	}
	int num=t.size();//算出目前算式中有的要背的单词个数 
	if(num==0)
	{
		cout<<"0 0";
		return 0;
	}
	t.clear();//清空,后面t要存区间l~r内的元素情况 
	int i=1,j=1;//因为有可能num=0,所以一开始为0 
	t[s[1]]++;
	int cnt=1,ans=INT_MAX;//目前有几个种类,长度是多少 
	while(j<=m)
	{
		if(cnt==num)//选完 
		{
//			cout<<666<<endl;
			ans=min(ans,j-i+1);
			t[s[i]]--;
			if(!t[s[i]]&&mp[s[i]]) cnt--;
			i++;
		}
		else
		{
			j++;
			t[s[j]]++;
			if(t[s[j]]==1&&mp[s[i]]) cnt++;
		}
//		cout<<i<<" "<<j<<" "<<cnt<<endl;
	}
	cout<<num<<endl<<ans;
}
2023/8/14 15:08
加载中...