foj Problem 1894 志愿者选拔---单调队列

1180:分数线划定/P1068 [NOIP2009 普及组] 分数线划定 1180:分数线划定/P1068 [NOIP2009 普及组] 分数线划定世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m×150%m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。第一行 阅读详情

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



此题为单调队列练习题。。。。

题述意思很明了就是要求我们维护一个队列,这题的麻烦在于如何快速的查找到最大值。

对于插入一个值我们放在队尾,并去除那些比当前rp少得值。。。。另外再维护一个序号num就行了。。。为什么可以删去队尾比当前值小的值呢??稍微思考一下就行了。。

//
//  main.cpp
//  foj Problem 1894 志愿者选拔 ---单调队列的使用
//
//  Created by XD on 15/8/13.
//  Copyright (c) 2015年 XD. All rights reserved.
//

#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<vector>
#include <string.h>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <cstdio>
using namespace std ;
struct node{
    int key ,  num ;
};
node que[1000010] ;



int main() {
    char s[1010],ch ;
    int casenum ,front,rear,cur,t ;
    scanf("%d" ,&casenum) ;
    
    while (casenum--) {
//        memset(que, 0, sizeof(que)) ;
        front = 0 ;
        rear = 0 ;
        scanf(" %s" , s) ;
        t =0 ;
        cur = 0 ;
        while (true) {
            
            scanf(" %c" , &ch) ;
            if (ch == 'E') {
                scanf(" %s",s) ;
                break ;
            }
            
            switch(ch)
            {
                case 'C':
                    int d ;
                    ;
                    scanf(" %s%d " , s ,&d ) ;
                    while (rear > front) {
                        if (que[rear-1].key <= d) {
                            rear-- ;
                        }
                        else{
                            que[rear].key = d  ;
                            que[rear].num =t++ ;
                            rear++ ;
                            break ;
                        }
                    }
                    if (rear == front) {
                        rear++ ;
                        que[front].key =d ;
                        que[front].num = t++ ;
                    }
                    break ;
                case 'G':
                    if (que[front].num == cur) {
                        front++ ;
                    }
                    cur++ ;
                    
                    break ;
                case 'Q':
                    if(front == rear)
                    {
                        printf("-1\n") ;
                        
                    }
                    else{
                        printf("%d\n" , que[front].key) ;
                    }
                    break ;
            }
        }
    }
    
    
    
    return 0;
}


洛谷 P1068 分数线划定【排序+模拟】 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,AA市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根 据计划录取人数的150\%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m \times 150\%m×150% (向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有 选手。 现在就... 阅读详情

相关推荐

电子学会C/C++编程等级考试2021年09月(六级)真题解析

之后n行,在第i行上(1 ≤ i ≤ n),为两个整数 ai 和 bi ,整数之间用一个空格分隔,表示区间 [ai;对于每组测试数据,输出执行完所有的操作后队列中剩余的元素,元素之间用空格隔开,按队头到队尾的顺序输出,占一行。输出一行,如果这些区间最终可以合并为一个闭区间,输出这个闭区间的左右边界,用单个空格隔开;我们的任务是判断这些区间是否可以最终合并为一个闭区间,如果可以,将这个闭区间输出,否则输出no。当type=2,出队操作,接着输入一个整数c,c=0代表从队头出队,c=1代表从队尾出队。

人生就是一个不断学习的过程 411

【题解】分数线划定 (NOIP 2009 普及组 第二题)

题目来源:洛谷 题目描述: 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,AA市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m \times 150%m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 ...

cjx的博客 3516

2021年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。时间限制:1000内存限制:65535第一行输入一个整数t,代表测试数据的组数。每组数据的第一行输入一个整数n,表示操作的次数。接着输入n行,每行对应一个操作,首先输入一个整数type。当type=1,进队操作,接着输入一个整数x,表示进入队列的元素。当type=2,出队操作,接着输入一个整数c,c=0代表从队头出队,c=1代表从队尾出队。n

人生就是一个不断学习的过程 1306

每日一题12006-分数线划定

1.题目详情 世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 2.解题思路 学号和成绩需要匹配,成绩输出的同时学号也不能改变 如何比较笔试成绩? 同

weixin_46398446的博客 1323

洛谷训练题 P1068 分数线划分 难度 普及-

世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,AA市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150\%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m \times 150\%m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

80MHz~100MHz频谱分析仪设计

由理论分析可知,经过乘法器后输出的信号为频率为w1+w2的高频信号和w1-w2的低频信号,除了想要采样的直流信号外,最小的信号频率为100kHz。因此,经过一系列推导可以得到该滤波器的元件C1,C2,C3,R1,R2的近似值分别为:C1=2.36nF,C2=32.1nF,C3=1.07nF,R1=1.39k,R2=2.84k。AK,此时的频率w2即为被测信号的频率,待测信号源电压幅度为,因此为了能达到直流采样的设计,我们将本振源的频率输出范围做成80~110 MHz,提高了题目的频率要求。

qq_48771816的博客 5242

【NOIP2009普及组】分数线划定

描述世博会志愿者的选拔工作正在A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划...

a8859933的博客 672

零代码实战:基于Coze平台打造测试用例生成AI助手

本文详细介绍了如何利用Coze平台零代码打造测试用例生成AI助手,通过智能体和工作流配置,实现需求文档自动解析与结构化测试用例生成。该方案显著提升测试效率,特别适合敏捷开发中频繁变更的需求场景,帮助测试工程师快速应对挑战。

weixin_42526015的博客 209

双端队列

描述 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也可以从队尾。编程实现这个数据结构。 输入第一行输入一个整数t,代表测试数据的组数。 每组数据的第一行输入一个整数n,表示操作的次数。 接着输入n行,每行对应一个操作,首先输入一个整数type。 当type=1,进队操作,接着输入一个整数x,表示进入队列的元素。 当type=2,出队操作,

oliver341的专栏 1757

FPGA 核脉冲梯形成型 Verilog 实现:从 MATLAB 到 50MHz 采样率部署

本文详细解析了FPGA实现核脉冲梯形成型的完整流程,从MATLAB仿真到50MHz采样率的Verilog硬件部署。重点探讨了梯形成型算法对负指数信号的优化处理,包括定点数量化、流水线架构设计及资源优化技巧,为核辐射探测与高能物理实验提供高效解决方案。

weixin_30920513的博客 389

GNN-图卷积模型-直推式-2016:GCN【消息传递(前向传播):聚合函数+更新函数】【聚合函数:mean(邻域所有节点取平均值)】【训练更新函数的参数】【空域+频域】【同质图】

图神经网络(GNN):GCN【开山之作】

u013250861的博客 2055

FZU Problem 1894 志愿者选拔 (单调队列带注释)

原题地址:http://acm.fzu.edu.cn/problem.php?pid=1894 思路:单调队列模板题 #include &amp;amp;lt;cmath&amp;amp;gt; #include &amp;amp;lt;iostream&amp;amp;gt; #include &amp;amp;lt;cstdio&amp;amp;gt; #include &amp;amp;lt;algorithm&amp;amp;gt;

yiqzq的博客 409

使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤

本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 985

双端队列(C语言实现)

双端队列可以使用循环数组来实现,也可以使用双链表来实现,下面给出双端队列的循环数组实现,链表实现的原理与队列的实现也是类似的,但由于双端队列可能会从尾部删除结点,所以为了效率,使用能够找到前驱结点的双链表。队列是一种操作受限的线性表,它只允许从队头出队,从队尾入队,就像生活中的排队一样。双端队列放宽了这种限制,它可以从队头出队或入队,也可以从队尾出队或入队。双端队列可以从两端进行出队和入队,也可以对一种操作进行限制,例如,入队受限(一端入队)的双端队列和出队(一端出队)的双端队列。

thdwx的博客 2282

【机器学习与数据挖掘实战 | 医疗】案例18:基于Apriori算法的中医证型关联规则分析

本案例针对三阴乳腺癌患者,经问卷调查收集数据并筛选处理形成原数据,经清洗、特征选择与变换后,构建Apriori模型,基于业务理解与建模结果,分析患者症状与中医证型关联,并据症状给出建议 。

Morse_Chen的博客 1380

国家自然基金回避专家有必要填写吗?被回避专家能看到吗?

不填也能中填1–2个最保险只填1个最直接竞争者。✅一句话结论可以不填,但建议填1–2个被回避专家绝对看不到如果你愿意,我可以再告诉你一个很多人不知道的国家自然基金“评审分组规则”——它其实决定了你的项目最可能送到哪些专家手里,这对地区基金中标率影响很大。

qq_15963745的博客 155

信息学奥赛一本通(c++):1180:分数线划定

1180:分数线划定【题目描述】世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。...

StrawBerryTreea的博客 1346

vectorCast——Probe point 功能实现故障注入,局部变量打印,断点调试。

选择一个测试用例,选择coverage窗口进行查看。点击edit probe point,如图所示绿色的小圆圈。 选代码中选择需要打断点的地方进行点击。黑色的小圆点都可以选。 点击黑色小圆点,小圆点变绿,表示打断点成功。 此时就可以根据自己的需求在打断点的位置编写一些C语言的命令语句。 点击编译,成功会弹出窗口显示编译成功,失败会在下方报错error,并显示错误的原因。 点击应用保存,选择yes to all就可以了。 点击用例执行就可以看到打断点情况下的执行结果了。

weixin_59334478的博客 2066

(Java版)P1068 [NOIP2009 普及组] 分数线划定 --- Java题解

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,AA市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150\%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m \times 150\%m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。 现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 输入格式 第一行,两个整数n,m(5.

weixin_51991615的博客 1053

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

双端队列的实现——C语言

题目要求: 插入和删除元素只能在同一端进行,队列的插入操作和删除操作分别在两端进行,与它们不同的,有一种双端队列(deque),其插入和删除操作都可以在两端进行。写出4 个时间均为0(1)的过程,分别实现在双端队列的两端插人和删除元素的操作,该队列是用一个数组实现的。 解题思路: 利用数组来存储元素,设置两个变量head和tail,分别记录队列头部元素的下标和尾部“将要插入”元素的下标。从尾...

sinat_32092165的博客 4138

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据结构--双端队列

双端队列(Double-ended Queue,简称Deque)是一种具有队列和栈特性的数据结构,可以在队列的两端进行插入和删除操作。双端队列允许从前端和后端同时进行插入和删除操作,因此可以称为“两端都可以进出的队列”。双端队列的实现方式有多种,包括使用数组、链表等数据结构。具体的实现方式可以根据不同的需求和场景选择合适的方式。

m0_60593173的博客 9863

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode 641. 设计循环双端队列

641. 设计循环双端队列

qq_38304915的博客 1150

每日一题 第二十四期 洛谷 分数线的划定

世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

2301_80882026的博客 1394

【641. 设计循环双端队列】

根据循环队列的定义,队列判空的条件是 front = rear,而队列判满的条件是 front = (rear + 1)modcapacity。我们可以使用双向链表来模拟双端队列,实现双端队列队首与队尾元素的添加、删除。双向链表实现比较简单,双向链表支持 O(1) 时间复杂度内在指定节点的前后插入新的节点或者删除新的节点。时间复杂度:初始化和每项操作的时间复杂度均为 O(1)。空间复杂度:O(k),其中 k 为给定的队列元素数目。空间复杂度:O(k),其中 k 为给定的队列元素数目。可以参考循环队列:「.

Sugar_wolf的博客 414

(sort)P1068 分数线划定 洛谷

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,AA市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根 据计划录取人数的150\%150%划定,即如果计划录取mm名志愿者,则面试分数线为排名第m \times 150\%m×150% (向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所...

319
上一篇: uva 11134 - Fabled Rooks 优先队列 + 贪心
下一篇: uva 1471 Defense Lines
LuckyqXd
博客等级 码龄12年 2粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值