bzoj 1206: [HNOI2005]虚拟内存
.
题意:自己看
题解:stl
代码:
#include<bits/stdc++.h>
#define pa pair<int,int>
using namespace std;
set<pair<pa,int> >s;
map<int,pa>mp;
int n,m,ans=0;
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
int x;
scanf("%d",&x);
if(mp.count(x))
{
set<pair<pa,int> >::iterator it=s.lower_bound(make_pair(mp[x],x));
s.erase(it);
mp[x].first++;
s.insert(make_pair(mp[x],x));
ans++;
}
else
{
if(mp.size()==n)
{
pair<pa,int>hh=*s.begin();
s.erase(s.begin());
mp.erase(hh.second);
}
mp[x]=make_pair(0,i);
s.insert(make_pair(make_pair(0,i),x));
}
}
printf("%d",ans);
}