wqy的B题

题意:

和一道叫机器翻译的题差不多,不过这道题要难一些,没有规定必须删除最早入队的。

解法:

解法和[POI2005]SAM-Toy Cars这道题差不多,考虑贪心。

每次选取下一次使用最远的点删除。

拿个堆维护一下就好了。

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue> using namespace std; #define LL long long
#define N 200010 int n,k,a[N],nxt[N],last[N];
priority_queue<pair<int,int> > q,del;
bool vis[N]; int main() {
scanf("%d%d",&n,&k);
for(int i = 1 ; i <= n ; i++) {
scanf("%d",&a[i]);
nxt[last[a[i]]] = i;
last[a[i]] = i;
}
for(int i = 1 ; i <= N ; i++) {
if(last[i]) nxt[last[i]] = n+1;
}
int ans = 0,size = 0;
for(int i = 1 ; i <= n ; i++) {
if(vis[a[i]]) {
del.push(make_pair(i,a[i]));
q.push(make_pair(nxt[i],a[i]));
continue;
}
ans++;
if(size < k) {
vis[a[i]] = 1;
size++;
q.push(make_pair(nxt[i],a[i]));
} else {
while(!q.empty() && !del.empty() && q.top() == del.top()) q.pop(),del.pop();
int num = q.top().second;
q.pop();
vis[num] = 0;
vis[a[i]] = 1;
q.push(make_pair(nxt[i],a[i]));
}
}
printf("%d \n",ans);
//system("pause");
return 0;
}

wqy的B题的更多相关文章

  1. wqy的C题

    wqy的C题 毒瘤! 题意: 你有一张 $ n $ 个点 $ m $ 条边的无向图. 你想在这张图上添加 $ n $ 条有向边,每一条有向边连接两个点 $ u,v $ ,你需要保证 $ u,v $ 在 ...

  2. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  3. 【Java每日一题】20170106

    20170105问题解析请点击今日问题下方的"[Java每日一题]20170106"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  4. 【Java每日一题】20170105

    20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  5. 【Java每日一题】20170104

    20170103问题解析请点击今日问题下方的"[Java每日一题]20170104"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  6. 【Java每日一题】20170103

    20161230问题解析请点击今日问题下方的"[Java每日一题]20170103"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  7. SQL面试笔试经典题(Part 1)

    本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记,持续更新... 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.htm ...

  8. 刷LeetCode的正确姿势——第1、125题

    最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的 ...

  9. AWS的SysOps认证考试样题解析

    刚考过了AWS的developer认证,顺手做了一下SysOps的样题.以下是题目和答案. When working with Amazon RDS, by default AWS is respon ...

随机推荐

  1. myeclipse 出现换行符和空格符 解决方案 换行出现乱码

    请参看百度经验 https://jingyan.baidu.com/article/acf728fd2639e4f8e510a399.html myeclipse 2014 自定义视图Customiz ...

  2. HTTP method GET is not supported by this URL

    Servlet eroor:HTTP method GET is not supported by this URL 错误提示: type: Status report message: HTTP m ...

  3. python3爬虫之requests库基本使用

    官方文档链接(中文) https://2.python-requests.org/zh_CN/latest/ requests  基于  urllib3 ,python编写. 安装 pip insta ...

  4. perl语言的线程使用

    参考的教程链接是 https://www.cnblogs.com/migrantworkers/p/6973459.html 1.Perl 多线程的使用,join 和 detach 的区别 ,join ...

  5. C++ 语句函数再探

    1. 表达式只计算,抛弃计算结果: 2. 空语句什么也不做: 3.switch case语句漏写break,将会从匹配到的情况开始执行,直到语句结束 int main() { ; i + ; //表达 ...

  6. cannot find -llapack + -lblas

    问题: cannot find -llapack + -lblas 解决: sudo apt-get install libblas-dev liblapack-dev 转:https://suppo ...

  7. 【CPU】记录当前嵌入式设备CPU 比较最高CPU 并打印出来

    1.测试CPU,最高CPU,最低CPU,平均CPU,单个进程如wlan的CPU占比,脚本后面接的第一个参数是要打印cpu的次数,第二个是sleep多久,第三个参数是记录当前数据的路径path #!/b ...

  8. Thinkphp 两级联动

    <!-- 前端代码部分--><div class="pop-movegroup" id="salesmanBox"> <dl> ...

  9. Python基本语法变量

    Python的语法和其它编程语言的语法有所不同,编写Paython程序之前需要对语法有所了解,才能编写规范的Python程序.本篇介绍Python标识符的同时,也讨论了Python变量的声明和赋值.通 ...

  10. JavaScript005,语法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...