思路:求每个人的左使者就是从左到右把每个人加入到单调队列中去,加入时最后一个出队的就是那个最大的小于这个数的数

求右信使同理

由于本题的单调队列队头不需要出队,所以其实是一个单调栈

/*
每个人只要找到左(右)边的比它小的最大的数即可,用单调队列模拟即可
*/
#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 ;
}

最新文章

  1. Scala的第一步
  2. [python拾遗]异常处理
  3. 类似网易新闻 title栏 滚动时 文字放大&amp;变色
  4. Linux的awk命令
  5. 161208、Java enum 枚举还可以这么用
  6. (转载)C语言预处理
  7. 嵌入式 Linux下编译并使用curl静态库
  8. reduce + Promise 顺序执行代码
  9. USACO4.13Fence Loops(无向图最小环)
  10. Mathlab编程-微积分在Matlab中的解法
  11. IOS开发备忘
  12. JEFF BANKS_百度百科
  13. 关于jquery尺寸的总结
  14. ABP 框架webapi设置跨域
  15. JasperReport报表开发(一)--原理介绍
  16. Python模块的导入以及软件开发规范
  17. 基于 Dropbear &amp; Zlib 搭建轻量级的ssh server
  18. OpenGL ES 3.0之Fragment buffer objects(FBO)详解(一)
  19. 【DeepLearning】用于几何匹配的卷积神经网络体系结构
  20. ubuntu 14.04 (desktop amd 64) 查看配置参数

热门文章

  1. 自己的Promise
  2. Nginx 入门指南
  3. java.lang.UnsupportedClassVersionError: xxx/xxxClass : Unsupported major.minor version 51.0【转】
  4. ping 返回的TTL数值代表什么?
  5. .NET面试题系列(十)委托与事件
  6. resultMap自定义某个javaBean的封装规则代码
  7. MyBatis第一个案例的优化,通过映射文件与接口进行绑定
  8. Varish 缓存
  9. Android学习笔记——Bluetooth的使用
  10. php 获取压缩包名