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