不会队列,这代码还有希望吗
查看原帖
不会队列,这代码还有希望吗
1334262
lov_e_study楼主2024/12/19 21:30
#include<bits/stdc++.h>
using namespace std;
long long n,k,p,ans,num;
struct PII
{
	int next,kill;
}now[1000009];
int a[1000009];
int iforno[1000009];
int nextt[100009][100009];
bool cmp(PII x,PII y)
{
	return x.next>y.next;
 } 
int main()
{
	cin>>n>>k>>p;
	if(k>=n)
	{
		cout<<n;
		return 0;
	}
	for(int i=1;i<=p;i++) cin>>a[i];
	 for(int i=p;i>=1;i--) nextt[a[i]][i]==i; 
	for(int i=1;i<=p;i++)
	{
	    if(num!=k&&iforno[a[i]]==0)
	    {num++;now[num].kill=a[i];ans++;now[num].next=nextt[a[i]][i];iforno[a[i]]==1;
    	 } 
	    else if(num==k&&iforno[a[i]]==0)
	    {iforno[now[1].kill]==0;now[1].kill=a[i];now[1].next=nextt[a[i]][i];iforno[a[i]]==1;
	    	ans++;
	    } 
		sort(now+1,now+num+1,cmp);
	}
	cout<<ans;
	return 0;
}
2024/12/19 21:30
加载中...