FZU 1894(单调队列第一发)
2015-07-17 16:54
211 查看
题意:参加志愿者选拔的同学们排队接受面试官们的面试。参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查。
输入 | 含义 | |
1 | C NAME RP_VALUE | 名字为NAME的人品值为RP_VALUE的同学加入面试队伍。(名字长度不大于5,0 <= RP_VALUE <= 1,000,000,000) |
2 | G | 排在面试队伍最前面的同学面试结束离开考场。 |
3 | Q | 主面试官John想知道当前正在接受面试的队伍中人品最高的值是多少。 |
思路:直接维护一个单调递减序列,那么序列首就是最大值。因为是按照先来先走的规则,所以每一次更新的话把原来的在此位置的那个人舍弃掉。
#include<stdio.h> #include<string.h> #define maxn 1000000 struct node{ int x,val; }q[maxn]; int main() { int t; char name[6],na[10],start[12]; int rp; scanf("%d",&t); while(t--) { int i,j,k,head=0,tail=-1,last=0,K=1; scanf("%s",start); while(scanf("%s",name)!=EOF) { if(strcmp(name,"END")==0) break; if(name[0]=='C') { scanf("%s%d",na,&rp); while(tail>=head&&q[tail].val<=rp) tail--; node a; a.x = K++; a.val = rp; q[++tail]=a; } else if(name[0]=='Q') { while(tail>=head&&q[head].x<=last) head++; if(tail>=head) printf("%d\n",q[head].val); else printf("-1\n"); } else last++; } } return 0; }
相关文章推荐
- mysql 联合查询的时候 统计不知道 为何不准
- 杭电ACM 2092:整数解
- 感知器
- poj 2549 折半枚举+二分
- 【分享】Nginx日志分析(上)
- Android笔记---adb (安卓调试桥)的使用
- 推荐系统
- 如何迁移SharePoint 2010至新的站点
- 【名风自动点击王】支持前台和后台鼠标键盘模拟游戏生活好帮手|IP网页自动点击器
- UVa1592 set和map去重 不知道为什么已知wrong
- Linux 删除用户出现提示userdel: user ** is currently logged in
- Linux中断(interrupt)子系统之二:arch相关的硬件封装层
- dbg调试
- 颜色设置 <color name="white">#FFFFFF</color><!--白色 -->
- 九度oj 1046
- rime 输入法设置
- Dev控件 TreeList的使用,绑定多级树以及多选框的三种状态
- linux 定时任务配置
- 【Struct(结构体)杂谈之二】名不正则言不顺---Struct(结构体)的声明、定义及初始化
- Linux中断(interrupt)子系统之一:中断系统基本原理