poj3410单调队列(单调栈)
2024-08-29 09:36:32
思路:求每个人的左使者就是从左到右把每个人加入到单调队列中去,加入时最后一个出队的就是那个最大的小于这个数的数
求右信使同理
由于本题的单调队列队头不需要出队,所以其实是一个单调栈
/*
每个人只要找到左(右)边的比它小的最大的数即可,用单调队列模拟即可
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define maxn 50005
#define ll long long
using namespace std; int a[maxn],ans[maxn][],n; int main(){
int t;
scanf("%d",&t);
for(int tt=;tt<=t;tt++){
printf("Case %d:\n",tt);
memset(ans,,sizeof ans);
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
int last,l=,r=,q[maxn];
q[]=;
for(int i=;i<=n;i++){
last=;
while(l<r && a[i]>a[q[r-]])
r--,last=q[r];
q[r++]=i;ans[i][]=last?last:;
} q[]=;l=,r=;
for(int i=n;i>=;i--){
last=;
while(l<r && a[i]>a[q[r-]])
r--,last=q[r];
q[r++]=i;ans[i][]=last?last:;
}
for(int i=;i<=n;i++) printf("%d %d\n",ans[i][],ans[i][]);
}
return ;
}
最新文章
- Scala的第一步
- [python拾遗]异常处理
- 类似网易新闻 title栏 滚动时 文字放大&;变色
- Linux的awk命令
- 161208、Java enum 枚举还可以这么用
- (转载)C语言预处理
- 嵌入式 Linux下编译并使用curl静态库
- reduce + Promise 顺序执行代码
- USACO4.13Fence Loops(无向图最小环)
- Mathlab编程-微积分在Matlab中的解法
- IOS开发备忘
- JEFF BANKS_百度百科
- 关于jquery尺寸的总结
- ABP 框架webapi设置跨域
- JasperReport报表开发(一)--原理介绍
- Python模块的导入以及软件开发规范
- 基于 Dropbear &; Zlib 搭建轻量级的ssh server
- OpenGL ES 3.0之Fragment buffer objects(FBO)详解(一)
- 【DeepLearning】用于几何匹配的卷积神经网络体系结构
- ubuntu 14.04 (desktop amd 64) 查看配置参数
热门文章
- 自己的Promise
- Nginx 入门指南
- java.lang.UnsupportedClassVersionError: xxx/xxxClass : Unsupported major.minor version 51.0【转】
- ping 返回的TTL数值代表什么?
- .NET面试题系列(十)委托与事件
- resultMap自定义某个javaBean的封装规则代码
- MyBatis第一个案例的优化,通过映射文件与接口进行绑定
- Varish 缓存
- Android学习笔记——Bluetooth的使用
- php 获取压缩包名