玄关求调
查看原帖
玄关求调
944438
Only_Him楼主2025/7/22 18:55

rt

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
set<pair<int,int>> s;
#define N 1000005
int a[N],lst[N],nxt[N],ans;
signed main() {
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int n,k,p;
	cin >> n >> k >> p;
	for (int i = 1;i <= p;i++){
		cin >> a[i];
	}
	for (int i = 1;i <= n;i++) lst[i] = p + 1;
	for (int i = p;i;i--){
		nxt[i] = lst[a[i]];
		lst[a[i]] = i;
	}
	for (int i = 1;i <= p;i++){
		if (s.find({-i,a[i]}) != s.end()){
			s.erase({-i,a[i]});
			s.insert({-nxt[i],a[i]});
			continue;
		}
		s.insert({-nxt[i],a[i]});
		ans++;
		if(s.size() > k) s.erase(s.begin());
//		for (auto x : s){
//			cout << x.se << ' ';
//		}
//		cout << endl;
	}
	cout << ans << endl;
	return 0;
}

76分

2025/7/22 18:55
加载中...