80救啊,下的数据点被吞了
查看原帖
80救啊,下的数据点被吞了
230804
Durancer楼主2020/8/8 10:59
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int m,n,a[1009],bj[1009],ans=0,que[2019];
int main()
{
	cin>>m>>n;
	int head=1,tail=1;
	if(m==0)
	{
		for(int i=1;i<=n;i++)
		{	
			cin>>a[i];
			if(bj[a[i]]==0)
			{
				bj[a[i]]=1;
				ans++;
			}
		}
	}
	if(m!=0)
	{
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
		}
		bj[head]=1;//将第一个存入 
		que[head]=a[1];
		for(int i=2;i<=n;i++)
		{
			if(bj[a[i]]==0)//如果是新词 
			{	
				ans++;//查找次数++ 
				if(tail-head+1>m-1)
				{
					bj[que[head]]=0;
					head++;
					tail++;
					que[tail]=a[i];
					bj[a[i]]=1;
				}
				if(tail-head+1<=m-1)
				{
					tail++;
					que[tail]=a[i];//存入新词 
					bj[a[i]]=1;
				}
			}
		}
	}
	cout<<ans;
//	for(int i=1;i<=n;i++)
//	{
//		if(bj[a[i]]==0)
//		ans++; 
//	} 
//	cout<<ans;
//	cout<<endl;
//	for(int i=head;i<=tail;i++)
//	{
//		cout<<que[i]<<" ";
//	}
	return 0;
}
2020/8/8 10:59
加载中...