10分求救
查看原帖
10分求救
170603
chaichunyang楼主2020/8/16 13:56

代码:

using namespace std;
int N,K,M;
int a[500039];
int Next[500039];
int p[500039];
int d[500039];
int num;
bool b;
char ch;
int ans;
int main(){
	freopen("1.in","r",stdin);
	scanf("%d%d%d",&N,&K,&M);
	memset(Next,0x3f,sizeof(Next));
	for(int i=1;i<=M;i++){
		scanf("%d",&a[i]);
	}
	for(int i=M;i>=1;i--){
		if(p[a[i]]!=0)Next[i]=p[a[i]];
		p[a[i]]=i;
	}
	num=0;
	memset(p,0,sizeof(p));
	for(int i=1;i<=M;i++){
		if(p[a[i]]==0){
			ans++;
			if(num<K){
				p[a[i]]=1;
			}
			else{
				int maxn=-1000,maxm=-1;
				for(int k=1;k<=i;k++){
					if(p[k]&&maxn<Next[a[k]]){
						maxn=Next[a[k]];
						maxm=k;
					}
					if(Maxn==0x3f)break;
				}
				p[maxm]=0;
				p[a[i]]=1;
				num--;
			}
		}
		num++;
	}
	printf("%d\n",ans);
	return 0;
}

仅有10分,其余都wa了

2020/8/16 13:56
加载中...