BZOJ 1206: [HNOI2005]虚拟内存

来源:互联网 发布:算法导论第几版好 编辑:程序博客网 时间:2024/05/22 19:35

模拟题

#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<queue>using namespace std;map<int,int>mp;int sz;int id(int x){if(!mp.count(x))mp[x]=++sz;return mp[x];}struct page{int cnt,ti,id;bool operator < (const page &rhs)const{if(cnt!=rhs.cnt)return cnt>rhs.cnt;return ti>rhs.ti;}};priority_queue<page>q;int cnt[1000005];int read(){char ch=getchar();int x=0,f=1;while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}void refresh(){while(q.top().cnt!=cnt[q.top().id]){page x=q.top();q.pop();x.cnt=cnt[x.id];q.push(x);}}int main(){//freopen("a.in","r",stdin);int n=read(),m=read(),ans=0;for(int i=1;i<=m;i++){int k=read();k=id(k);cnt[k]++;if(cnt[k]>1)ans++;else if(q.size()!=n)q.push((page){1,i,k});else refresh(),cnt[q.top().id]=0,q.pop(),q.push((page){1,i,k});}printf("%d\n",ans);return 0;}


0 0
原创粉丝点击