Description

博览馆正在展出由世上最佳的M位画家所画的图画。人们想到博览馆去看这几位大师的作品
。可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,a和b,
代表要看展览中的第a幅至第b幅画(包含a和b)之间的所有图画,而门票的价钱就是一张图画
一元。人们希望入场后可以看到所有名师的图画(至少各一张)。可是又想节省金钱……请你
写一个程序决定购买门票时的a值和b值。

Input

第一行是N和M,分别代表博览馆内的图画总数及这些图画是由多少位名师的画所绘画的。
其后的一行包含N个数字,它们都介于1和M之间,代表该位名师的编号。
N<=1000000,M<=2000

Output

a和b(a<=b)由一个空格符所隔开。
保证有解,如果多解,输出a最小的。

Sample Input

12 5
2 5 3 1 3 2 4 1 1 5 4 3

Sample Output

2 7

这道题可能是我博客里最简单的一道题,但是可怕的是,我还是错了几次,这确实有点绝望。我的错误原因就是我自己认为一旦收集齐m个数字就跳出,但其实没有考虑到有可能在后面会有更小的值

当然这种错误真的是脑子抽了,这题的思路超级简单,就是一个O(n)复杂度的队列模拟,如果队首可以收缩,那就收缩;
好吧这就是全部思路,好吧题如此简单,我也就提供一个精简过后的代码吧
 #include<iostream>
#include<queue>
using namespace std;
int vis[],n,m,a,l=,r,tot,ans=,al,ar; queue<int>q;
int main(){cin>>n>>m;
for(int i=;i<=n;i++){
cin>>a; q.push(a); r++;
if(vis[a] == ){tot++;} vis[a]++;
while(vis[q.front()] > && l < r){l++; vis[q.front()]--; q.pop();}
if(tot==m){if(r-l+<ans)ans=r-l+,al=l,ar=r; }
}cout<<al<<' '<<ar;
}
												

[noip模拟]画展<队列的基础知识>的更多相关文章

  1. 消息队列RabbitMQ基础知识详解

    一: 什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序或者模块对模块的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另 ...

  2. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  3. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  4. js基础知识温习:Javascript中如何模拟私有方法

    本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...

  5. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  6. ReactiveCocoa基础知识内容

    本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCoc ...

  7. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  8. Java笔记(十四) 并发基础知识

    并发基础知识 一.线程的基本概念 线程表示一条单独的执行流,它有自己的程序计数器,有自己的栈. 1.创建线程 1)继承Thread Java中java.lang.Thread这个类表示线程,一个类可以 ...

  9. 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是 ...

随机推荐

  1. 解决 Highcharts 中 yAxis 的 max 设置无效的问题

    问题场景 $(function () { Highcharts.chart('container', { title: { text: 'line' }, xAxis: { categories: [ ...

  2. JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计

    5230. [NOIP2017模拟A组模拟8.5]队伍统计 (File IO): input:count.in output:count.out Time Limits: 1500 ms Memory ...

  3. 前端开发--nginx番外篇

    Centos7下Nginx开发使用(背景: 阿里云ECS Centos7) 安装和启动 安装教程 Centos7安装Nginx实战 需要主意的如下: 文中第四步 4.配置编译参数命令:(可以使用./c ...

  4. xcode制作越狱包

    1.将运行目标选为iOS Device 2.Edit Scheme -> 选择 Run [App Name] -> Build Configuration下拉框中选择Release 3.生 ...

  5. 智慧树刷网课python脚本

    0x00 写在前面 疫情期间肯定有很多小伙伴需要上网课,但是有些网课我们感觉十分的鸡肋,自己不感兴趣,又必须要学 所以我写了这个刷网课的小程序,一方面是锻炼自己的爬虫技术,另一方面也给同学们节约宝贵的 ...

  6. css 实现九宫格

    1.自己写了一个,写完对比了下别人写的发现自己写的太low.故就不写自己太差劲的了. 别人写的我总结优化了一下,如果不用写内容去掉position,content简单也是可以的. <!DOCTY ...

  7. react 装 router - yarn add react-router-dom@next

    react 装 router yarn add react-router-dom@next

  8. Java 并发同步工具(转)

    转自:https://www.jianshu.com/p/e80043ac4115 在 java 1.5 中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如 CountDownLatch,Cy ...

  9. 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析

    前言:大数据,人工智能,工业物联网,5G 已经或者正在潜移默化地改变着我们的生活.在信息技术快速发展的时代,谁能抓住数据的核心,利用有效的方法对数据做数据挖掘和数据分析,从数据中发现趋势,谁就能做到精 ...

  10. Natas10 Writeup(正则表达式、grep命令)

    Natas10: 页面与上一关类似,只是增加了提示“出于安全原因,我们现在过滤某些字符”. 查看源码,发现关键代码如下: $key = ""; if(array_key_exist ...