题目描述

现在告诉你有一个队列,一开始它是空的,首先你会把 1,2,3,…m 这 m 个数依次push入这个队列。

接着,会进行 n 次操作,每次操作你需要进行如下操作:

首先,获得队首元素,输出队首元素,并且将这个队首元素pop出队列;然后你可以在如下两个选择中任选一个操作:

  1. 将这个队首元素永远的抛弃;
  2. 将这个队首元素重新加入到队尾中。

现在告诉你 n 和 n 次操作所输出的队首元素,需要你判断是否存在一个数 m 使得这个操作是可行的。

输入格式

第一行一个正整数 n ,用于表示操作的次数。(1≤n≤100000)

第二行 n 个正整数,以空格分隔,用于表示 n 次操作所输出的队首元素。

输出格式

如果存在一个数 m 使得这 n 次操作可行,输出“YES”;否则,输出“NO”。

样例输入1

5
1 2 3 1 2

样例输出1

YES

样例输入2

5
1 2 3 2 1

样例输出2

NO

样例解释

对于样例 1,当 m3 时,我们执行如下操作就可以得到目标序列 [1,2,3,2,1]

初始时,que = [1,2,3]

step.1: 输出 1 = que.front(), que.pop(), que.push(1), 此时 que = [2,3,1]

step.2: 输出 2 = que.front(), que.pop(), que.push(2),此时 que = [3,1,2]

step.3: 输出 3 = que.front(), que.pop(), que.push(3), 此时 que = [1,2,3]

step.4: 输出 1 = que.front(), que.pop(), 此时 que = [2,3]

step.5: 输出 2 = que.fornt(), que.pop(), 此时 que = [3]

那么我们输出的序列就是 [1,2,3,1,2],所以 m3 是存在的。这个序列合法,我们输出“YES”。

对于样例 2,我们没有办法得到m。

因为我们在 1, 2, 3 之后输出了 2,也就是说我一开始抛弃了 1 ,并且 m==3,那么到此我输出 2 是合法的,

但是我在2 之后又输出了 1,但是模拟到这里我们可以明显看出 1 肯定是在之前被抛弃了。所以你个序列不合法,输出“NO”。

P1032 队列的序列的更多相关文章

  1. 【单调队列】bzoj2096 [Poi2010]Pilots

    用两个单调队列维护序列中的最大值和最小值即可. poi~ #include<cstdio> #include<algorithm> using namespace std; i ...

  2. Python 双向队列Deque、单向队列Queue 模块使用详解

    Python 双向队列Deque 模块使用详解 创建双向队列Deque序列 双向队列Deque提供了类似list的操作方法: #!/usr/bin/python3 import collections ...

  3. SAP RFC通信模式

    在网络技术中,数据通信可以大致划分为两种基本模式:同步通信和异步通信. 其本义是:异步通信时,通信双方时钟允许存在一定误差:同步通信时,双方时钟的允许误差较小.在SAP的系统间的通信过程中,也借用术语 ...

  4. ABAP RFC远程调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. Python Tutorial 学习(五)--Data Structures

    5. Data Structures 这一章来说说Python的数据结构 5.1. More on Lists 之前的文字里面简单的介绍了一些基本的东西,其中就涉及到了list的一点点的使用.当然,它 ...

  6. glib 文档 代码 索引 编译

    ./configure --prefix=/opt/glib-2.28.8 --enable-staticmakemake install linux下载 WIN32下载 代码索引 文档索引 GLib ...

  7. Python 任务队列 Celery

    一. celery 简介 Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时提供操作和维护分布式系统所需的工具.. 所谓任务就是消息, 消息中的有效载荷中包含要执行任务需要的全部数据 ...

  8. Dictionary实现先进先出代替Queue

    Queue删除其中一个元素比较麻烦,这是一个重码校验的类,主要处理是用Dictionary代替Queue了.目前使用下来还算稳定.代码贴出来给有缘人参考. /// <summary> // ...

  9. abap 常用TCODE

    ABAP: 通过查询表TSTC或者TSTCT:SAP系统将所有的事务代码都存储在这个表中,包括字开发的Y*和Z* TCODE 事务代码功能描述 CG3Y 下载服务器上文件 CG3Z upload fi ...

随机推荐

  1. Spark day05

    Shark Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将 ...

  2. concurrent模块

    concurrent包 concurrent.futrues模块 3.2版本引入 异步并行任务模块,提供一个高级的异步可执行的便利接口. 提供了两个池执行器 ThreadPoolExecutor异步调 ...

  3. python 对象(object)

  4. CF772E Verifying Kingdom

    CF772E Verifying Kingdom 有趣的交互题(交互题都挺有意思的) %ywy 增量法构造 考虑加入了前i个叶子 那么树是前i个叶子构成的虚树! 最后n个叶子构成的虚树就是答案! 怎样 ...

  5. python系列之(4)豆瓣图书《平凡的世界》书评及情感分析

    本篇主要是通过对豆瓣图书<平凡的世界>短评进行抓取并进行分析,并用snowNLP对其进行情感分析. 用到的模块有snowNLP,是一个python库,用来进行情感分析. 1.抓取数据 我们 ...

  6. SqlAlchemy的简单使用

    1.SQLAlchemy SQLAlchemy是python的一个通用的ORM框架 1.1 创建数据表 from sqlalchemy.ext.declarative import declarati ...

  7. C++中String字符串查找

    在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C ...

  8. sql —— in

    IN 操作符允许我们在 WHERE 子句中规定多个值. 原表: 执行查询:

  9. H5本地存储技术和微信小程序中的本地存储

    1.H5的本地存储 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  10. HDU 1081 To The Max【dp,思维】

    HDU 1081 题意:给定二维矩阵,求数组的子矩阵的元素和最大是多少. 题解:这个相当于求最大连续子序列和的加强版,把一维变成了二维. 先看看一维怎么办的: int getsum() { ; int ...