FZU 1894 (双端队列)

原创 2013年12月04日 21:08:46
Problem 1894 志愿者选拔

Accept: 1166    Submit: 3683
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

2STARTC Tiny 1000000000C Lina 0QGQENDSTARTQC ccQ 200C cxw 100QGQC wzc 500QEND

 Sample Output

10000000000-1200100500

 Hint

数据较大建议使用scanf,printf 不推荐使用STL

 Source

福州大学第七届程序设计竞赛
题意:一个队列,有入队出队查询操作。查询的时候输出队列中最大值。
思路:单调队列。
代码:
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;

typedef pair<int, int> pi;
deque<pi>q;

const int N = 15;
int num, head, rear, t;
char start[N], quit[N];

int main() {
    scanf("%d", &t);
    while (t --) {
	scanf("%s", start);
	head = 0; rear = 0;
	while (!q.empty())
	    q.pop_front();
	while (scanf("%s", quit) && strcmp(quit, "END") != 0) {
	    if (quit[0] == 'C') {
		scanf("%s%d", start, &num);
		while (!q.empty() && q.back().first < num) {
		    q.pop_back();
		}
		q.push_back(make_pair(num, rear));
		rear ++;
	    }
	    else if (quit[0] == 'G') {
		if (q.front().second == head)
		    q.pop_front();
		head ++;
	    }
	    else {
		if (!q.empty())
		    printf("%d\n", q.front().first);
		else
		    printf("-1\n");
	    }
	}
    }
    return 0;
}


相关文章推荐

FZU 1894 志愿者选拔【单调队列】【monotone decreasing queue】

Problem 1894 志愿者选拔 Accept: 1770    Submit: 5523 Time Limit: 1500 mSec    Memory Limit : 32768 KB...

fzu1894 志愿者选拔 单调队列

Problem 1894 志愿者选拔 Accept: 1299    Submit: 4084 Time Limit: 1500 mSec    Memory Limit : 32768 KB...

FZU 1894 志愿者选拔(简单单调队列)

Problem 1894 志愿者选拔 Accept: 772    Submit: 2529 Time Limit: 1500 mSec    Memory Limit : 32768 KB ...
  • fp_hzq
  • fp_hzq
  • 2012年08月17日 19:23
  • 1126

FZU 1894(志愿者选拔-裸的单调队列)

Problem 1894 志愿者选拔 Accept: 1001    Submit: 3189 Time Limit: 1500 mSec    Memory Limit : 32768 K...

【单调队列】FZU 1894 志愿者选拔

Problem 1894 志愿者选拔 Accept: 1381    Submit: 4319 Time Limit: 1500 mSec    Memory Limit : 32768 KB ...

单调队列裸题 fzu 1894 志愿者选拔

http://acm.fzu.edu.cn/problem.php?pid=1894 Problem 1894 志愿者选拔 Accept: 768    Submit: 2521 Time...

FZU Problem 1894 志愿者选拔 单调队列

题目:http://acm.fzu.edu.cn/problem.php?pid=1894 题意: Problem Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动...

FZU 1894 志愿者选拔 单调队列

点击打开链接 Problem 1894 志愿者选拔 Accept: 1176    Submit: 3717 Time Limit: 1500 mSec    Memory ...

FZU - 1894选拔志愿者【单调队列】

Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动。 参加志愿者选拔的同学们排队接受面试官们的面试。参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查。...

fzu 1894 志愿者选拔 单调队列的学习

Problem 1894 志愿者选拔 Accept: 1178    Submit: 3719 Time Limit: 1500 mSec    Memory Limit : 32768 KB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FZU 1894 (双端队列)
举报原因:
原因补充:

(最多只允许输入30个字)