FZU 1894 志愿者选拔
Problem 1894 志愿者选拔
Accept: 2308 Submit: 7003
Time Limit: 1500 mSec Memory Limit : 32768 KB
Problem Description
世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动。
参加志愿者选拔的同学们排队接受面试官们的面试。参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查。
面试中每个人的人品是主要考查对象之一。(提高人品的方法有扶老奶奶过街,不闯红灯等)
作为主面试官的John想知道当前正在接受面试的同学队伍中人品值最高的是多少。于是他请你帮忙编写一个程序来计算。
Input
输入数据第一行为一整数T,表示有T组输入数据。
每组数据第一行为”START”,表示面试开始
接下来的数据中有三种情况:
输入 含义
1 C NAME RP_VALUE 名字为NAME的人品值为RP_VALUE的同学加入面试队伍。(名字长度不大于5,0 <= RP_VALUE <= 1,000,000,000)
2 G 排在面试队伍最前面的同学面试结束离开考场。
3 Q 主面试官John想知道当前正在接受面试的队伍中人品最高的值是多少。
最后一行为”END”,表示所有的面试结束,面试的同学们可以依次离开了。
所有参加面试的同学总人数不超过1,000,000
Output
对于每个询问Q,输出当前正在接受面试的队伍中人品最高的值,如果当前没有人正在接受面试则输出-1。
Sample Input
2
START
C Tiny 1000000000
C Lina 0
Q
G
Q
END
START
Q
C ccQ 200
C cxw 100
Q
G
Q
C wzc 500
Q
END
Sample Output
1000000000
0
-1
200
100
500
Hint
数据较大建议使用scanf,printf 不推荐使用STL
Source
福州大学第七届程序设计竞赛
单调队列问题,虽然不难,现在我还有点懵。
#include <iostream>
#include <cstdio>
#include<cstring>
using namespace std;
int x;
char a[10];
int ms[1000001],q[1000001];
int main(){
int t;
cin>>t;
while(t--){
int front=0,tail=-1;
int front2=0,tail2=-1;
scanf("%s",a);
if(a[0]=='S')
while(1){
scanf("%s",a);
if(a[0]=='E') break;
switch(a[0]){
case 'C':scanf("%s",a);scanf("%d",&x);
tail2++;
ms[tail2]=x;
while(tail>=front&&x>q[tail]) tail--;
tail++;
q[tail]=x;
break;
case 'G':if(front2<=tail2){
if(ms[front2]==q[front])
front++;
front2++;
}
break;
case 'Q':if(front2<=tail2) printf("%d\n",q[front]);
else printf("-1\n");
}
}
}
return 0;
}
FZU 1894 志愿者选拔的更多相关文章
- FZU 1894 志愿者选拔【单调队列】【monotone decreasing queue】
Problem 1894 志愿者选拔 Accept: 1770 Submit: 5523 Time Limit: 1500 mSec Memory Limit : 32768 KB P ...
- FZU 1894 志愿者选拔 (单调队列)
/****************************************************************** 题目: 志愿者选拔(FZU 1894) 算法: 单调队列 算法思 ...
- FZU 1894 志愿者选拔(单调队列)
传送门 Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查. ...
- FZU 1894 志愿者选拔 单调队列
训练赛的题…… 暴力一波明显超时…… 最近刚学stl 感觉是优先队列 但还是太会用…… 以后可以试一下优先队列…… 比赛之后百度了一下 发现是单调队列…… 看起来挺简单的 也算个模版题吧…… 总之思路 ...
- FZU 1894 志愿者选拔(优化循环)
我并没有多想,他们是用的数组模拟队列,然而我就是优化循环次数过得 #include<iostream> #include<cstdio> #include<cstring ...
- 暑期训练狂刷系列——Foj 1894 志愿者选拔 (单调队列)
题目连接: http://acm.fzu.edu.cn/problem.php?pid=1894 解题思路: 因为出队和入队都满足队列的性质,优先单调队列的优先级有进入队列的顺序和人品的高低,在一段区 ...
- FZU 1894 (双端队列)
Problem 1894 志愿者选拔 Accept: 1166 Submit: 3683 Time Limit: 1500 mSec Memory Limit : 32768 KB Pr ...
- FZU1894 志愿者选拔
Problem Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们 ...
- FZU1894 志愿者选拔 --单调队列
做法:维护一个单调递减序列,只需输出序列中的第一个元素即可. 对于命令我们可以进行不同的处理: 如果是Q命令,则判断当前队列中是否仍有元素,如果没有则输出-1,如果有则直接输出队首. 如果是G命令,则 ...
随机推荐
- Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍
更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...
- SQL基础系列(1)-基本语法--转载w3school
1. 建原始表 USE [Northwind] GO /****** Object: Table [dbo].[Persons] Script Date: 2016/6/8 7:31:5 ...
- 四、华为VRP平台介绍和常用配置
一.华为VRP平台 华为现用的平台是VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台. 包含华为产品中的路由.交换.安全.无线等等 二.华为设备管 ...
- 使用基于vuecli创建的目录推送到指定远程分支
笔者使用vuecli创建项目目录以后,在想将该目录提交到远程仓库时发现行不通,在忙活了一下午以后写下此文 1.github上新建一空分支,然后克隆该分支地址: https://github.com/ ...
- 通过STC15F2K60S2控制SIM900A发中英文短信,打电话
本文通过串口通信,使用STC15系列单片机实现发短信打电话功能. 一. 注意事项 1. 首先要确定手机卡已经注册到网络,具备打电话发短信功能 2. 正确的硬件连接: P3.0-----STXD或者5V ...
- Cobalt Stike使用教程
目录: 安装与连接 监听器Listner 基本使用方法--Cobalt Strike生成后门 Beacon详解 菜单栏与视图 文件管理与进程管理 浏览器代理 Cobalt Strike扩展 提权 横向 ...
- C - Infinite Fence -1260C
考虑区间长度,我们让r和b除以他们的__gcd这样,这样得到的r和b是互质或者相等的.我们取他们两个小的那个.假设是b.那么被涂的方块应该是b,2b,3b,4b,....kb. 相邻的两个方块之间的区 ...
- Python开发基础之Python常用的数据类型
一.Python介绍 Python是一种动态解释型的编程语言.Python它简单易学.功能强大.支持面向对象.函数式编程,可以在Windows.Linux等多种操作系统上使用,同时Python可以在J ...
- [go]包和工程管理
一.系统环境变量 GOROOT 指定go的安装目录,win是在 C\Go\,Linux在 /usr/local/go下,如果不是默认的目录,则需要指定 GOROOT环境变量,否则不需要 GOPATH ...
- DZ的CURD
Discuz二次开发-MySQL插入数据(insert) DB::insert($tableName,$data,$flag); $tableName:表名 $data:插入数据,以字段为键值的关联数 ...