1 条题解

  • 0
    @ 2024-3-23 13:10:28
    #include<bits/stdc++.h>
    using namespace std;
    queue<int>q;//创建列表 
    bool a[114514]={false};//创建内存(计数思想) 
    int main()
    {
    	int m,n,x,k=0,bloodpressure=0;//bloodpressure为作者血压(划)查询次数 
    	scanf("%d%d",&m,&n);//=cin>>m>>n 
    	for(int i=0;i<n;i++)
    	{
    		scanf("%d",&x);//=cin>>x
    		if(k<m)//如果内存没爆 
    		{
    			if(!a[x])//检测内存有没有x 
    			{
    				q.push(x);//添加x到队尾 
    			    a[x]=true;//添加进内存库 
    			    k++;//内存数量加一 
    			    bloodpressure++;//查询次数加一 
    			}
    		}
    		else//内存爆了 
    		{
    			if(!a[x])//同上 
    			{
    				a[q.front()]=false;//内存最早的数删掉 
    				q.pop();//删掉队首 
    				q.push(x);//添加x进队尾 
    				a[x]=true;//同上 
    				bloodpressure++;//同上 
    			}
    		}
    	}
    	printf("%d",bloodpressure);
    	return 0;
    }
    
    • 1

    信息

    ID
    430
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    64
    已通过
    14
    上传者