FZU 1894 志愿者选拔 (单调队列)
/******************************************************************
题目: 志愿者选拔(FZU 1894)
算法: 单调队列
算法思想: 在每个元素入队的时候入队的时候,使队列单调,查找
的时候就能很快找到最值。
*******************************************************************/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std; const int mx=;
struct Q
{
int x,di;
};
Q q[mx];
char s[]; int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int h=,r=-; ///h为对头,r为队尾
int cut=,id=; ///cut为删除数的个数,id为插入数的下标。
scanf("%s",s);
while (~scanf("%s",s))
{
if (s[]=='E') break;
if (s[]=='G') cut++;
if (s[]=='Q')
{
if (cut>=id) printf("-1\n"); ///删除数个数大于等于最大数id,队列为空
else
{
while (q[h].di<=cut) h++; ///由于队列是单调的,所以只要找到第一个没
///有被删除数就是最大数,只要一个数的id大于
///删除数的个数,那么这个数就没有被删除
printf("%d\n",q[h].x);
}
}
if (s[]=='C')
{
int x;
scanf("%s%d",s,&x);
while (r>=h&&q[r].x<x) ///找到这个数要插入的为,使队列从头到尾是单调
///的,这样做虽然会覆盖一些数,但是覆盖的数已
///经不会再输出了。
{
r--;
}
q[++r].x=x;
q[r].di=++id;
}
}
}
}
FZU 1894 志愿者选拔 (单调队列)的更多相关文章
- FZU 1894 志愿者选拔 单调队列
训练赛的题…… 暴力一波明显超时…… 最近刚学stl 感觉是优先队列 但还是太会用…… 以后可以试一下优先队列…… 比赛之后百度了一下 发现是单调队列…… 看起来挺简单的 也算个模版题吧…… 总之思路 ...
- FZU 1894 志愿者选拔【单调队列】【monotone decreasing queue】
Problem 1894 志愿者选拔 Accept: 1770 Submit: 5523 Time Limit: 1500 mSec Memory Limit : 32768 KB P ...
- FZU 1894 志愿者选拔
Problem 1894 志愿者选拔 Accept: 2308 Submit: 7003 Time Limit: 1500 mSec Memory Limit : 32768 KB Problem D ...
- FZU 1894 志愿者选拔(单调队列)
传送门 Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查. ...
- FZU1894 志愿者选拔 --单调队列
做法:维护一个单调递减序列,只需输出序列中的第一个元素即可. 对于命令我们可以进行不同的处理: 如果是Q命令,则判断当前队列中是否仍有元素,如果没有则输出-1,如果有则直接输出队首. 如果是G命令,则 ...
- 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 ...
- FZU_1894 志愿者选拔 【单调队列】
1 题面 FZU1894 2 分析 单调队列的典型引用 需要注意的是在用维护辅助队列的时候,$L$和$R$的初始化都是0时,队列第一个数就是$L$,最后一个数就是$R-1$. 3 AC代码 #incl ...
随机推荐
- Intellij IDEA连接Git@OSC
错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin http://my.oschina.net/lujianin ...
- js json排序
var p = [ {name:"kitty", age:12}, {name:"sonny", age:9}, ...
- 单节点nginx为两台apache服务器提供负载均衡
需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...
- <<人性的弱点>>读书笔记
书名的英文名其实是<< How to win friends and influence people & how to stop worrying and start livin ...
- SonarQube的安装、配置与使用
SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...
- Hadoop学习11--Ha集群配置启动
理论知识: http://www.tuicool.com/articles/jameeqm 这篇文章讲的非常详细了: http://www.tuicool.com/articles/jameeqm 以 ...
- UDP发送数据测试
一个合作伙伴说UDP发送数据,A(IP:192.168.1.100 子网掩码255.255.255.0)网段能发数据到B网段,但B(IP:192.168.2.100 子网掩码255.255.255.0 ...
- 浅谈可扩展性框架:MEF
之前在使用Prism框架时接触到了可扩展性框架MEF(Managed Extensibility Framework),体验到MEF带来的极大的便利性与可扩展性. 此篇将编写一个可组合的应用程序,帮助 ...
- css实现绝对定位元素居中
前端我们时常需要封装一些弹出框,这些弹出框大小都不能确定,多半是用js实现居中. 现在有了css3可以不用js了. .box{ background-color: blueviolet; width: ...
- AX Dynamic 2012 tabletype:TempDB使用
LedgerJournalTmp ledgerJournalTmpJoin; LedgerJournalTransAccrual this.takeOwnershipOfTempTable(ledge ...