【bzoj 18261528】: [JSOI2010]缓存交换
传送门
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]缓存交换相关推荐
- [BZOJ]1826: [JSOI2010]缓存交换 线段树
Description 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除一 ...
- 1826: [JSOI2010]缓存交换
Description 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除一 ...
- bzoj1826: [JSOI2010]缓存交换
传送门 界定内存放进去还是出来的是他下一次出现的位置(没有是n+1) 显然先出现的比后出现的更优. 然后优先队列水一波. #include<cstdlib> #include<ios ...
- 程序员面试金典——17.1无缓存交换
程序员面试金典--17.1无缓存交换 主要是利用异或性质~ 程序员面试金典--17.1无缓存交换 class Exchange { public:vector<int> exchangeA ...
- 无缓存交换 牛客网 程序员面试金典 C++ Python
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...
- JSOI2010 BZOJ1826 缓存交换
洛谷 BZOJ 分析 贪心策略很好想,显然,当 \(cache\) 未满时,直接放进去就行了: \(cache\) 满了的时候,考虑交换哪一个,不难看出可以交换下一次出现最晚的那个. 注意:不开 \( ...
- bzoj 1826 缓存交换
题目大意: 一些数,需要将他们依次取入一个集合中 集合的容量有限 若该数已经在集合中则不用再取 每次取的时候可以将集合中与元素替换为另一个,也可以不换,直接加入前提是不超过集合容量 求最后最小的取数次 ...
- BZOJ 2208[Jsoi2010]连通数
题面: 2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 3100 Solved: 1347 [Submit] ...
- BZOJ 1821: [JSOI2010]Group 部落划分 Group【MST】
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MB Description 聪聪研究发现,荒岛野人总是过着群 ...
最新文章
- Error in exists(x): 第一个参数不对
- 超全的 Linux Shell 文本处理工具集锦,快收藏
- Yii2的深入学习--yii\base\Object 类
- 用Python解决数据结构与算法问题
- 理论 | 三天两夜,万字长文,吃透TCP/IP
- 编程经历的一些思考——一个工作4年老鸟的职业思考(转载)
- 《炬丰科技-半导体工艺》 光学镜片和玻璃部件的超声波清洗
- SAP学习记__物料管理(MM)模块__采购入库冲销、退货
- tomcat7下载地址
- 语音芯片,语音合成芯片,嵌入式语音合成软件的区别
- 《高效能人士的7个习惯》PDF,复习笔记(上)
- 16年,平凡而又收获的一年,为什么说Flutter让移动开发变得更好
- 用余子式、代数余子式和伴随 来求逆矩阵
- UML图 符号的含义
- mysql 查询数据库中所有表的信息
- 解读SM, SP和Warp
- 【Beeple同款】NFT 电子艺术画框上架链作
- Nginx 实现OCSP Stapling
- Android Studio制作简易微信界面
- 计算机语言space什么意思,space是什么意思
热门文章
- 视频社交和语音社交,谁才是下一个风口?以觅伊、赫兹为例
- mysql常建引擎_智慧树初识数据库—Mysql见面课测试答案
- 屋顶打字通(三)--总结
- Robot Framework--05 案例设计之流程与数据分离
- 融合聚类信息的技术主题图可视化方法研究
- 数字画像构建_想构建数字产品? 首先问自己这四个问题
- 视频号如何打造爆款的基础条件一定要知道:国仁楠哥
- 功率谱有什么用_所有电器功率单位都用瓦,为什么空调要用匹,一匹等于多少瓦...
- 超实用k8s集群资源清理命令
- OpenDRIVE 1.6 参考线采样方法