3185 队列练习 1 3186 队列练习 2

3185 队列练习 1

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题目描述 Description

给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请输出最终的队头元素。 操作解释:1表示入队,2表示出队

输入描述 Input Description

N(操作个数)
N个操作(如果是入队则后面还会有一个入队元素)
具体见样例(输入保证队空时不会出队)

输出描述
Output Description

最终队头元素,若最终队空,输出”impossible!”(不含引号)

样例输入
Sample Input

3
1 2
1 9
2

样例输出
Sample Output

9

数据范围及提示
Data Size & Hint

对于100%的数据 N≤1000 元素均为正整数且小于等于100

 1 #include<iostream>
 2 using namespace std;
 3 #include<cstdio>
 4 int d[10000];
 5 int head=1,tail=1;
 6 int main()
 7 {
 8     int n,x,y;
 9     cin>>n;
10     for(int i=1;i<=n;++i)
11     {
12         scanf("%d",&x);
13         if(x==1){
14             scanf("%d",&y);
15             d[tail++]=y;
16         }
17         if(x==2)
18         {
19             head++;
20         }
21     }
22     if(head==tail)cout<<"impossible!";
23     else cout<<d[head];
24     return 0;
25 }

3186 队列练习 2

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题目描述 Description

(此题与队列练习1相比改了2处:1加强了数据 2不保证队空时不会出队)
给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请
输出最终的队头元素。 操作解释:1表示入队,2表示出队

输入描述
Input Description

N(操作个数)
N个操作(如果是入队则后面还会有一个入队元素)
具体见样例(输入保证队空时不会出队)

输出描述
Output Description

最终队头元素,若最终队空,或队空时有出队操作,输出”impossible!”(不含引号)

样例输入
Sample Input

3
1 2
2
2

样例输出
Sample Output

impossible!

数据范围及提示
Data Size & Hint

对于100%的数据  N≤100000 元素均为正整数且小于等于10^8

 1 #include<iostream>
 2 using namespace std;
 3 #include<cstdio>
 4 int d[100000];
 5 int head=1,tail=1;
 6 int main()
 7 {
 8     int n,x,y,b=1;
 9     cin>>n;
10     for(int i=1;i<=n;++i)
11     {
12         scanf("%d",&x);
13         if(x==1){
14             scanf("%d",&y);
15             d[tail++]=y;
16         }
17         if(x==2)
18         {
19             head++;if(head>tail)b=0;
20         }
21     }
22     if(head==tail||b==0)cout<<"impossible!";
23     else cout<<d[head];
24     return 0;
25 }

3187 队列练习 3

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 钻石 Diamond

题目描述 Description

比起第一题,本题加了另外一个操作,访问队头元素(编号3,保证访问队头元素时或出队时队不为空),现在给出这N此操作,输出结果。

输入描述 Input Description

N
N次操作(1入队 2出队 3访问队头)

输出描述
Output Description

K行(K为输入中询问的个数)每次的结果

样例输入
Sample Input

6
1 7
3
2
1 9
1 7
3

样例输出
Sample Output

7
9

数据范围及提示
Data Size & Hint

对于50%的数据 N≤1000 入队元素≤200
对于100%的数据 N≤100000入队元素均为正整数且小于等于10^4

 1 #include<iostream>
 2 using namespace std;
 3 #include<cstdio>
 4 int d[100000];
 5 int head=1,tail=1;
 6 int main()
 7 {
 8     int n,x,y,b=1;
 9     cin>>n;
10     for(int i=1;i<=n;++i)
11     {
12         scanf("%d",&x);
13         if(x==1){
14             scanf("%d",&y);
15             d[tail++]=y;
16         }
17         if(x==2)
18         {
19             head++;
20         }
21         if(x==3)
22         {
23             cout<<d[head]<<endl;
24         }
25     }
26     return 0;
27 }

时间: 2024-10-13 01:16:10

3185 队列练习 1 3186 队列练习 2的相关文章

codevs 3186 队列练习2

3186 队列练习 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description (此题与队列练习1相比改了2处:1加强了数据 2不保证队空时不会出队)给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请输出最终的队头元素. 操作解释:1表示入队,2表示出队 输入描述 Input Description N(操作个数)N个操作(如果是入队则后面还会有一个入队元素)具体见样例(输入保证队空时不会出队) 输出描述 Outp

3186 队列练习 2

3186 队列练习 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description (此题与队列练习1相比改了2处:1加强了数据 2不保证队空时不会出队)给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请输出最终的队头元素. 操作解释:1表示入队,2表示出队 输入描述 Input Description N(操作个数)N个操作(如果是入队则后面还会有一个入队元素)具体见样例(输入保证队空时不会出队) 输出

数据结构Java实现07----队列:顺序队列&amp;顺序循环队列、链式队列、顺序优先队列

数据结构Java实现07----队列:顺序队列&顺序循环队列.链式队列.顺序优先队列 一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列. 下图是一个依次向队列中插入数据元素a0,a1,...,an-

队列(二)——队列的链表实现方式

1.队列的单向链表的实现方法 return只可以返回一个值,单向循环链表来实现队列的时候可以只保留一个指针,因为保留rear指针能够很方便的表示出front指针,所以保留rear指针. 另外由于链表的第一个结点处理比较特殊,所以在初始化的时候需要单独处理.链表实现的队列思想也是第一个单元作为头结点,不存放数据,rear指针指向的总是尾结点(在循环链表中也就是头结点的上一个结点). 2.实现方法 用带表头的单向循环链表来实现 #include <stdio.h> #include <mal

并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)

在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出).Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列. 注:什么叫线程安全?这个首先要明确.线程安全就是说多线程访问同一代码,不会产生不确定的结果. 并行和并发区别 1.并行是指两者同时执行一件事,比如赛跑,两个人都在不停的

PHP双向队列,双端队列代码

<?php /**  * User: jifei  * Date: 2013-07-30  * Time: 23:12 */ /**  * PHP实现双向队列,双端队列  * 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构.  * 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行.  */ class Deque {     public $queue=array();     /**      * 构造函数初始化队列     

顺序队列和链式队列的实现

队列是一种常用的数据结构,它跟栈一样,操作都受到限制,队列只允许从一端进数据,另一端出数据.队列跟栈不同,栈是一种"后进先出"的模式,而队列是一种"先进先出"的操作模式.就好比日常排队一样,先排队的先出,后排队的后出.例如,进入队列的顺序是1,2,3,4,5则出队列的顺序是1,2,3,4,5(只考虑一次性出列的情况). 队列也分顺序队列和链式队列,跟顺序栈和链表栈一样,顺序队列同样是基于数组实现,链式队列则是基于链表实现. 顺序队列: //顺序队列 #include

Java 模拟队列(一般队列、双端队列、优先级队列)

队列: 先进先出,处理类似排队的问题,先排的.先处理,后排的等前面的处理完了,再处理 对于插入和移除操作的时间复杂度都为O(1).从后面插入,从前面移除 双端队列: 即在队列两端都能够insert和remove:insertLeft.insertRight.removeLeft.removeRight 含有栈和队列的功能,如去掉insertLeft.removeLeft,那就跟栈一样了.如去掉insertLeft.removeRight.那就跟队列一样了 一般使用频率较低,时间复杂度 O(1)

Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 import collections # 初始化一个计数器 c = collections.Counter('sldfjoaoaufdlfuaof') print(c) # Counter({'f': 4, 'o': 3, 'a': 3, 'd': 2, 'u': 2, 'l': 2, 'j': 1,