acwing 651.逛画展(队列)
算法:(数组模拟队列)
思路:由题意为避免TLE易想到用队列来遍历;
(牢记队列的特点:两端都为口,像一个中空的管子一样;拿它来遍历数组)
每当画家不是遇到第一次了,队列头后移;每一轮队列尾都后移;
直到发现符合题意的队列,就尝试更新答案,直到最优解

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int n,m;
typedef pair<int,int> PII;
PII ans;
int a[N];   //a数组储存n幅画它的画家序号序列;
int cnt[2005];  //记录队列遍历a数组时候每个画家出现了多少次
int hh=1,tt=0;    //队列头,队列尾
int main ()
{cin.tie(0);ios::sync_with_stdio(false);cin>>n>>m;int k=0; //K记录队列中有多少个新遇见的画家  ans={1,1e6};//初始化答案为最大的 for (int i=1;i<=n;i++) cin>>a[i];for (int i=1;i<=n;i++){while (hh<=tt&&cnt[a[hh]]>1) cnt[a[hh]]--,hh++;   //队列头的画家出现过,计数减一,队列头后移 if (hh<=tt&&k==m) if (tt-hh<ans.second-ans.first) ans={hh,tt}; //一旦发现符合题意(画家全部出现过)的队列,答案更新为更短的队列左端和右端 tt=i;   //每轮队列尾后移 cnt[a[tt]]++;   //队列尾后移计数加一 if (cnt[a[tt]]==1) k++; //一旦队列尾出现的画家是新遇见的,K加一 }cout<<ans.first<<' '<<ans.second;return 0;
}

acwing 651.逛画展(队列)相关推荐

  1. 【洛谷 P1638】 【单调队列】 逛画展

    [洛谷 P1638] [单调队列] 逛画展 题目 解题思路 先求出最前面囊括所有画的位置 然后如果左边界的画不止存在一次,左边界右移 不断扩展右边界,求取答案 代码 #include<iostr ...

  2. 洛谷 P1638 逛画展

    洛谷 P1638 逛画展 题目链接 题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必 ...

  3. acwing 3548.双端队列

    acwing 3548.双端队列 链接:https://www.acwing.com/problem/content/3551/ 题目描述 给定一个双端空队列,有两种插入和一种读取操作 插入:向左端或 ...

  4. P1638 逛画展——尺取法的妙用

    题目描述 博览馆正在展出由世上最佳的 mm 位画家所画的图画. 游客在购买门票时必须说明两个数字,aa 和 bb,代表他要看展览中的第 aa 幅至第 bb 幅画(包含 a,ba,b)之间的所有图画,而 ...

  5. 尺取法 P1638 逛画展

    P1638 逛画展 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 其实就是求刚好拥有所有m种数字的最短区间 思路: 尺取法 当区间内数字种数刚好为m时记录一下最小区间长度 ...

  6. P1638 逛画展(尺取)

    逛画展 - 洛谷https://www.luogu.com.cn/problem/P1638 #include <iostream> #include <cstdio> #in ...

  7. 逛画展(单调队列) acm寒假集训日记22/1/1

    题目如下: AC代码如下: #include<iostream> #include<cstdio> #include<algorithm> #include< ...

  8. 【队列】C002_逛画展(单调队列)

    一.Problem 博览馆正在展出由世上最佳的 M 位画家所画的图画.wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,a 和 b, ...

  9. 逛画展(二分+队列)

    题目: 见https://www.luogu.com.cn/problem/P1638 思路: 我以为我这么做会超时来着,没想到ac了,具体思路就是:为了满足题目要求即花最少的钱,那么我们就二分区间长 ...

最新文章

  1. 运行从别处复制过来的linux可执行程序
  2. AI学高数达到MIT本科水平,学了微积分线性代数概率论等6门课,不光能做题还能出题...
  3. 【MCTalk Live】网易对话谷歌:如何成为一个顶50个的A+++++程序员
  4. [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及防御机理
  5. 不同版本操作系统和数据库的之间链接,和操作
  6. odps sql 日期函数处理
  7. 百度认证(深度学习初级工程师)考试题1
  8. 开发一款APP都有哪些流程?
  9. 计算机专业哪个考研简单,考研哪些专业比较简单好考?
  10. 2018年Android面试题含答案
  11. Python包pretty_errors
  12. 用计算机弹霜雪千年,霜雪千年(完整版)-双笙-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  13. sqlite 查询效率对比
  14. python的环境问题相关
  15. ESP32 NVS同windows文件系统的类比,附上一段NVS操作的代码解析
  16. 关于数据挖掘中“多重共线性”的确定方法(有图有真相)
  17. android tv闹钟_Android 平台有哪些闹钟应用值得推荐?
  18. mysql5.5升级至5.7
  19. 新版蜀山剑侠传3D立体格斗全方位剖析
  20. rimworld简单机器人mod_rimworld智能机器人MOD

热门文章

  1. Atom 下载与安装
  2. 12月书讯 | 年末上新,好书不断
  3. 简单的检索式问答系统
  4. 基于51单片机温湿度报警器设计LCD12864液晶仿真制作实训
  5. 关于Qwt的使用-QwtPlot
  6. 常见状态码 【最全状态码展示】
  7. 永磁直驱风力发电机并网仿真模型,单位功率因数控制,进行弱磁控制
  8. 【生活随想】自考小结
  9. 联想超融合存储:面向对象的分布式存储系统
  10. @Transactional 异常并未回滚