bzoj1826: [JSOI2010]缓存交换
来源:互联网 发布:菜刀切到手 知乎 编辑:程序博客网 时间:2024/06/05 18:13
传送门
界定内存放进去还是出来的是他下一次出现的位置(没有是n+1)
显然先出现的比后出现的更优。
然后优先队列水一波。
#include<cstdlib> #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring>#include<map>#include<queue>using namespace std;const int N=100005;map<int,int> s,vis;struct node{ int x,val; node(int k,int b){x=k;val=b;} bool operator < (node t) const{return val<t.val;}};priority_queue<node> q;int a[N],next[N],n,m,ans,tot;int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=n;i;i--){ if (s.count(a[i])) next[i]=s[a[i]]; else next[i]=n+1; s[a[i]]=i; } for (int i=1;i<=n;i++){ if (vis[a[i]]){ q.push(node(a[i],next[i])); continue; } if (tot==m){ tot--; while (!q.empty()){ node t=q.top(); q.pop(); if (!vis[t.x]) continue; vis[t.x]=0; break; } } ans++; vis[a[i]]=1; q.push(node(a[i],next[i])); tot++; } printf("%d",ans);}
阅读全文
0 0
- bzoj1826: [JSOI2010]缓存交换
- bzoj1826: [JSOI2010]缓存交换
- bzoj1826: [JSOI2010]缓存交换 贪心+优先队列
- 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护
- 【贪心】【JSOI2010】缓存交换
- 1826: [JSOI2010]缓存交换
- 1826: [JSOI2010]缓存交换
- bzoj 1826: [JSOI2010]缓存交换
- 【bzoj 1826&1528】: [JSOI2010]缓存交换
- [BZOJ]1826: [JSOI2010]缓存交换 线段树
- 【BZOJ】【P1826&P1528】【JSOI2010】【缓存交换】【题解】【堆+贪心】
- 无缓存交换
- centos 建立swap交换缓存区
- [JSOI2010]Group部落划分
- 【BZOJ 1823】 [JSOI2010]满汉全席
- 2208: [Jsoi2010]连通数
- BZOJ 1823: [JSOI2010]满汉全席
- bzoj 1823 [JSOI2010]满汉全席
- 【0030】bootstrap前端框架使用教程
- 微信开发知识库链接
- Spring MVC后台获取jQuery 参数
- Android App 基础性能优化
- 项目实训第四周1
- bzoj1826: [JSOI2010]缓存交换
- ios 开发中获取字符串中重复的字符的range
- Dubbo分布式服务框架入门(附工程)
- Linux环境PHP7.0安装
- C++和Lua的互调
- Ubuntu下如何默认字符界面启动(默认tty1)
- 面向对象高级1
- 剑指offer面试题[5]-从尾到头打印链表
- CF