60ptsWA看看哪错了
查看原帖
60ptsWA看看哪错了
1075989
BlauAnthony楼主2025/7/29 15:32
#include<iostream>
using namespace std;
int k,n,z,x[101],ls[101],nxt[101];
int main(){
	cin>>k>>n;
	for(int i=1;i<=n;i++)cin>>x[i],nxt[i]=2147483647,z=max(z,x[i]);
	for(int i=1;i<=n;i++){
		if(ls[x[i]])nxt[ls[x[i]]]=i;
		ls[x[i]]=i;
	}
	for(int i=1;i<=z;i++)ls[i]=0;
	int res=0,kfc=0;
	for(int i=1,ans,ansnode;i<=n;i++){
		if(ls[x[i]]){
			ls[x[i]]=i;
			continue;
		}
		if(kfc<k){
			ls[x[i]]=i;
			kfc++;
			continue;
		}
		ans=ansnode=0;
		for(int j=1;j<=z;j++){
			if(ls[j]){
				if(nxt[ls[j]]-ls[j]>ans){
					ans=nxt[ls[j]]-ls[j];
					ansnode=ls[j];
				}
			}
		}
		ls[x[ansnode]]=0;
		ls[x[i]]=i;
		res++;
	}
	cout<<res;
	return 0;
}

https://www.luogu.com.cn/record/227591250
感觉是个挺简单的贪心模拟

2025/7/29 15:32
加载中...