zoukankan      html  css  js  c++  java
  • FZU 1894 (双端队列)

    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
    ", q.front().first);
    		else
    		    printf("-1
    ");
    	    }
    	}
        }
        return 0;
    }


  • 相关阅读:
    CSS中 link 和@import 的区别是?
    display:none 和 visibility: hidden的区别
    怎样清除浮动
    纯CSS水波纹按钮效果
    如何让一个div水平垂直居中
    如何让一个div水平居中
    Vue封装简单的axios库
    Echarts-x轴数据换行显示
    Vue+Webpack打包路径问题
    Vue中Mint-ui底部弹出(上拉)组件
  • 原文地址:https://www.cnblogs.com/riasky/p/3459282.html
Copyright © 2011-2022 走看看