其他分享
首页 > 其他分享> > NC20185 [JSOI2010]缓存交换

NC20185 [JSOI2010]缓存交换

作者:互联网

题目

1.题目大意

2.题目分析

3.题目代码

#include <bits/stdc++.h>

using namespace std;

int a[100005];
int f[100005];
int nex[100005];

int main() {
    int n, m;
    cin >> n >> m;
    for(int i=1;i<=n;i++) cin >> a[i];
    map<int, int> mp;
    priority_queue<int> q;
    for(int i=n;i>0;i--) {
        if(mp.count(a[i])) nex[i] = mp[a[i]];
        else nex[i] = 100001;
        mp[a[i]] = i;
    }
    int ans = 0;
    for(int i=1;i<=n;i++) {
        if(!f[i]){
            ans++;
            if(ans>m) f[q.top()] = 0, q.pop();
        }
        f[nex[i]] = 1, q.push(nex[i]);
    }        
    cout << ans << endl;   
}

标签:JSOI2010,缓存,题目,int,NC20185,100005,mp,nex
来源: https://www.cnblogs.com/zhangyi101/p/16632261.html