1 题面

FZU1894

2 分析

  单调队列的典型引用

  需要注意的是在用维护辅助队列的时候,$L$和$R$的初始化都是0时,队列第一个数就是$L$,最后一个数就是$R-1$。

3 AC代码

#include <cstdio>
#include <iostream> using namespace std; const int MAXN = 1e6 + ;
int MQue[MAXN], Que[MAXN];
int L, R, LQ, RQ; void insert(int value)
{
Que[RQ++] = value;
while(L != R && MQue[R-] <= value) R--;
MQue[R++] = value;
} int query()
{
if(L == R)
return -;
else
return MQue[L];
} void pop()
{
//把辅助队列里的最大值去掉,因为这个值当前最大
//辅助队列里现在存在的数肯定比该数后到,可以达到维护的效果
if(LQ == RQ)
return;
if(MQue[L] == Que[LQ]) L++;
LQ++;
} int main()
{
//freopen("input.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int T;
scanf("%d", &T);
while(T--)
{
L = R = ;
LQ = RQ = ;
char s[], op;
scanf("%s", s); while(scanf("%s", s))
{
if(s[] == 'E')
break;
if(s[] == 'Q')
{
//查询
printf("%d\n", query() );
}
else if(s[] == 'G')
{
//出队
pop();
}
else
{
int v;
scanf("%s%d", s, &v);
insert(v);
}
}
}
return ;
}

最新文章

  1. centOs安装jdk1.7
  2. DP:教授逻辑学问题
  3. Java开发高薪之路__大纲篇
  4. Http 请求
  5. mediawiki 的使用 2
  6. net中使用母版页
  7. Linux 内核进程管理之进程ID 。图解
  8. AFNetworking3.0+MBProgressHUD二次封装,一句话搞定网络提示
  9. windows xp通过VNC viewer远程连接RHEL5桌面
  10. 无法使用Django新建项目:&amp;#39;django-admin.py&amp;#39;不是内部或外部命令
  11. Ceph 存储集群
  12. 【工作笔记四】去掉a标签超链接的虚线框的方法
  13. 【BZOJ4237】稻草人(CDQ分治,单调栈)
  14. webpack2 实践
  15. 解决CentOS(6和7版本),/etc/sysconfig/下没有iptables的问题
  16. result type
  17. 过滤富文本编辑器中的html元素和其他元素
  18. Numpy中的广播原则(机制)
  19. Win32汇编学习(8):菜单
  20. MySql 存储过程 退出

热门文章

  1. Chrome 强制刷新缓存的方法
  2. Linux中bash编程
  3. 优秀前端工程师必备: 我要一个新窗口: js开新窗的2种姿势
  4. ADF文件在哪个地方?
  5. Linux 基础教程 40-df和du命令
  6. Hdu1874 畅通工程续 2017-04-12 18:37 48人阅读 评论(0) 收藏
  7. Linux带有时间控制的多进程bash脚本
  8. tar.gz 解压
  9. 使用jdbc的方式访问kylin cube的数据
  10. EF按时间范围条件查询