传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=1826

http://www.lydsy.com/JudgeOnline/problem.php?id=1528

贪心,每次选择最靠后的,证明待脑补

//#define _TEST _TEST
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
/************************************************
Code By willinglive
************************************************/
/
#define rep(i,l,r) for(int i=l,___t=(r);i<=___t;i++)
#define per(i,r,l) for(int i=r,___t=(l);i>=___t;i--)
#define MS(arr,x) memset(arr,x,sizeof(arr))
#define LL long long
#define INE(i,u,e) for(int i=head[u];~i;i=e[i].next)
inline const int getint()
{int r=0,k=1;char c=getchar();for(;c<'0'||c>'9';c=getchar())if(c=='-')k=-1;for(;c>='0'&&c<='9';c=getchar())r=r*10+c-'0'; return k*r;
}
/
int n,m;
int a[100010];
map <int,int>head;
int next[100010];
typedef pair<int,int>pii;
priority_queue<pii>q;
bool inq[100010];
int cnt=0;
//
void input()
{MS(next,0x3f);scanf("%d%d",&n,&m);rep(i,1,n){scanf("%d",&a[i]);if(!head[a[i]]) head[a[i]]=++cnt;a[i]=head[a[i]];}head.clear();per(i,n,1){if(!head[a[i]]){head[a[i]]=i;next[i]=0x3f3f3f3f;continue;}next[i]=head[a[i]];head[a[i]]=i;}
}
void solve()
{int ans=0;int cur;for(cur=1;cur<=n;cur++){if(!inq[a[cur]]) ans++;q.push(make_pair(next[cur],a[cur]));inq[a[cur]]=1;//printf("%d ",cur);if(ans==m) break;}for(cur++;cur<=n;cur++){//printf("%d ",cur);if(inq[a[cur]]){//q.pop();q.push(make_pair(next[cur],a[cur]));continue;}inq[q.top().second]=0;//printf("not pop:%d %d\n",q.top().second,q.top().first);q.pop();//printf("has pop:%d %d\n",q.top().second,q.top().first);ans++;q.push(make_pair(next[cur],a[cur]));inq[a[cur]]=1;}printf("%d\n",ans);
}
/
int main()
{#ifndef _TESTfreopen("std.in","r",stdin); freopen("WL.out","w",stdout);#endifinput();solve();return 0;
}

【bzoj 18261528】: [JSOI2010]缓存交换相关推荐

  1. [BZOJ]1826: [JSOI2010]缓存交换 线段树

    Description 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除一 ...

  2. 1826: [JSOI2010]缓存交换

    Description 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除一 ...

  3. bzoj1826: [JSOI2010]缓存交换

    传送门 界定内存放进去还是出来的是他下一次出现的位置(没有是n+1) 显然先出现的比后出现的更优. 然后优先队列水一波. #include<cstdlib> #include<ios ...

  4. 程序员面试金典——17.1无缓存交换

    程序员面试金典--17.1无缓存交换 主要是利用异或性质~ 程序员面试金典--17.1无缓存交换 class Exchange { public:vector<int> exchangeA ...

  5. 无缓存交换 牛客网 程序员面试金典 C++ Python

    无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...

  6. JSOI2010 BZOJ1826 缓存交换

    洛谷 BZOJ 分析 贪心策略很好想,显然,当 \(cache\) 未满时,直接放进去就行了: \(cache\) 满了的时候,考虑交换哪一个,不难看出可以交换下一次出现最晚的那个. 注意:不开 \( ...

  7. bzoj 1826 缓存交换

    题目大意: 一些数,需要将他们依次取入一个集合中 集合的容量有限 若该数已经在集合中则不用再取 每次取的时候可以将集合中与元素替换为另一个,也可以不换,直接加入前提是不超过集合容量 求最后最小的取数次 ...

  8. BZOJ 2208[Jsoi2010]连通数

    题面: 2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 3100  Solved: 1347 [Submit] ...

  9. BZOJ 1821: [JSOI2010]Group 部落划分 Group【MST】

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MB Description 聪聪研究发现,荒岛野人总是过着群 ...

最新文章

  1. Error in exists(x): 第一个参数不对
  2. 超全的 Linux Shell 文本处理工具集锦,快收藏
  3. Yii2的深入学习--yii\base\Object 类
  4. 用Python解决数据结构与算法问题
  5. 理论 | 三天两夜,万字长文,吃透TCP/IP
  6. 编程经历的一些思考——一个工作4年老鸟的职业思考(转载)
  7. 《炬丰科技-半导体工艺》 光学镜片和玻璃部件的超声波清洗
  8. SAP学习记__物料管理(MM)模块__采购入库冲销、退货
  9. tomcat7下载地址
  10. 语音芯片,语音合成芯片,嵌入式语音合成软件的区别
  11. 《高效能人士的7个习惯》PDF,复习笔记(上)
  12. 16年,平凡而又收获的一年,为什么说Flutter让移动开发变得更好
  13. 用余子式、代数余子式和伴随 来求逆矩阵
  14. UML图 符号的含义
  15. mysql 查询数据库中所有表的信息
  16. 解读SM, SP和Warp
  17. 【Beeple同款】NFT 电子艺术画框上架链作
  18. Nginx 实现OCSP Stapling
  19. Android Studio制作简易微信界面
  20. 计算机语言space什么意思,space是什么意思

热门文章

  1. 视频社交和语音社交,谁才是下一个风口?以觅伊、赫兹为例
  2. mysql常建引擎_智慧树初识数据库—Mysql见面课测试答案
  3. 屋顶打字通(三)--总结
  4. Robot Framework--05 案例设计之流程与数据分离
  5. 融合聚类信息的技术主题图可视化方法研究
  6. 数字画像构建_想构建数字产品? 首先问自己这四个问题
  7. 视频号如何打造爆款的基础条件一定要知道:国仁楠哥
  8. 功率谱有什么用_所有电器功率单位都用瓦,为什么空调要用匹,一匹等于多少瓦...
  9. 超实用k8s集群资源清理命令
  10. OpenDRIVE 1.6 参考线采样方法