经典贪心

策略如下:

每次贪心让最需要的放下

易证正确

#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
inline void read(int &x){x=0;char ch=getchar();int 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();}x*=f;
}
int val[N]={};
int nxt[N]={};
int last[N]={};
int n,k,p;
int siz=0;
int ans=0;
priority_queue<pair<int,int> > Q;
int inqueue[N]={};
int main(){read(n);read(k);read(p);for(int i=1;i<=p;i++){read(val[i]);}for(int i=1;i<=p;i++){nxt[last[val[i]]]=i;last[val[i]]=i;}for(int i=1;i<=n;i++)nxt[last[i]]=1e9+7;for(int i=1;i<=p;i++){if(inqueue[val[i]]){pair<int,int> tmp;tmp.first=nxt[i];tmp.second=val[i];Q.push(tmp);    }else{siz++;ans++;if(siz>k){siz--;inqueue[Q.top().second]=0;Q.pop();}inqueue[val[i]]=1;pair<int,int> tmp;tmp.first=nxt[i];tmp.second=val[i];Q.push(tmp);}}cout<<ans;
}

转载于:https://www.cnblogs.com/Leo-JAM/p/10079220.html

省选专练[POI2005]SAM-Toy Cars相关推荐

  1. 省选专练之后缀自动机SPOJ1811LCS - Longest Common Substring

    陈老师引入SAM的例题 求两个串的LCS 直接建一个串的SAM,并且把另外一个串放进去跳. 这个方法很经典! 几乎满足了所有两个串的公共串问题的所有解法 有巨子说这个跳是均摊Log的,我也不知道QwQ ...

  2. 省选专练之神仙贪心IOI2013Robert

    [问题描述] 小沐把玩具扔在地板上,乱七八糟.庆幸的是,有一种特殊的机器人可以收拾玩具.不过他需要 确定哪个机器人去拣哪个玩具. 一共有 T 个玩具,整数 w[i]表示这个玩具的重量,整数 s[i]表 ...

  3. R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块

    我好菜啊100+60+30 滚犊子吧,两天加起来才410搞个屁我一年前都可以考400 不说了,题毕竟比较难 T1还是水题但是比昨天难 这是一个开绝对值不等式的题. 根据对奇数和偶数的最优根的归纳一定有 ...

  4. 省选专练之文艺计算姬

    "奋战三星期,造台计算机".小W响应号召,花了三星期造了台文艺计算姬. 文艺计算姬比普通计算机有更多的艺术细胞. 普通计算机能计算一个带标号完全图的生成树个数,而文艺计算姬能计算一 ...

  5. 省选专练(学习)可持久化Trie树(BZOJ3261)

    这个似乎也不是好难啊 但是可持久化Trie还是可以干许多线性基不能干的事. 什么是可持久化Trie? 顾名思义:是一种可以持久化的Trie树 他的建树方式和键值式线段树方式类似 也支持版本的减法 查询 ...

  6. 省选专练[CQOI2007]涂色

    不好理解的DP 伪区间DP F(i,j)表示子串i-j实现的方式最小 当i=j时明显为1 当s[i]==s[j]时 这里是理解的重难点: 通过递归可知当你刷i的时候顺便刷到j就好了 然后就是标准的区间 ...

  7. 省选专练(学习)AC自动机

    我好菜啊 AC自动机都不会 AC自动机可以干什么: 用一个模板串匹配多个子串. 这便让AC自动机可以干许多KMP和Tri树不能干的事. AC自动机的构造 首先建立一颗Trie树. 其次利用KMP的思想 ...

  8. 省选专练[NOI2008]志愿者招募

    一类新式网络流问题 按时间为键值拆点 链式连边. 考点:流量平衡思想 考点出处:网络流24题最长K重区间覆盖问题 建边: 每一天向下一天连INF-A[i],0的边 每一次劳工用差分的方式建边INF,c ...

  9. 省选专练【POI2015】Podzial naszyjnika

    辣么这个题可是真难 首先利用Hash表判断是否可以用 T2则是利用并查集的siz 好难啊 枚举区间段可以用BIT 我实际就没懂 #include<bits/stdc++.h> using ...

最新文章

  1. crossdomain.xml配置错误导致登录不了
  2. css调整表格在屏幕上的位置
  3. 透露抖音、腾讯、阿里、美团招开发岗位硬核面试题,轻轻松松收到offer
  4. 力扣--- 滑动谜题
  5. ES6之Module 的加载实现(1)
  6. 二叉排序数的构造-理论
  7. LeetCode(412)——Fizz Buzz(JavaScript)
  8. MYSQL-常用函数
  9. VS2010制作dll
  10. 知己知彼-关于Oracle安全比特币勒索问题揭秘和防范
  11. 反射: 反射在中Android运用
  12. Java实现图片无损任意角度旋转
  13. teamviewer或向日葵远程ubuntu系统不能调节屏幕分辨率
  14. android-手势密码
  15. 大吉大利,今晚吃鸡——跑毒篇
  16. 计算机网络的对学生的利弊英语作文,网络的利与弊英语作文范文
  17. Unity3D_(Shuriken粒子系统)制作简单的烟花爆炸效果
  18. hibernate5.4+mysql8+java8实例
  19. 蒙提霍尔问题:上帝视角 + 暴力数学
  20. 皇家贝贝骗子佟大为赴内蒙出席活动 影迷冒严寒守候支持

热门文章

  1. MSP430F5529 DriverLib 库函数学习笔记(一)时钟配置和闪烁LED
  2. 多年前的树莓派 B+ 重新工作
  3. Exynos4412 Uboot 移植(二)—— Uboot 启动流程分析
  4. [linux-svn] linux下svn常用指令
  5. Firefox无法启动,提示Profile is yet in use by another Firefox
  6. react学习(13)-moment中 isRangePicker 控制类型
  7. 前端学习(2970):div的scoped
  8. [html] 写一个滚动吸顶的布局
  9. [css] 你有用过clip-path吗?说说你对它的理解和它都有哪些运用场景?
  10. [js] 微信的JSSDK都有哪些内容?如何接入?