题目链接【http://www.spoj.com/problems/DRUIDEOI/en/】

题意:给出n个数,从1到n围城一个环(1和n相连),求每个数左边第一个比他大的第一个下标,右边第一个比他大的下标,若所有的值都没有i大输出-1,-1。

题解:为了构成一个环,把所有的数重复两遍即:1,2,3,4,5,1,2,3,4,5,分别从前到后和从后到前维护单调递减栈即可。注意下标。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + ;
int a[maxn], que[maxn];
int A[maxn], B[maxn];
int T, n, ed, ma;
int main ()
{
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
ma = ;
ed = ;
for(int i = ; i <= n; i++)
{
scanf("%d", &a[i]);
a[i + n] = a[i];
if(ma < a[i]) ma = a[i];
}
for(int i = ; i <= * n; i++)
{
while(ed && a[que[ed]] < a[i])
{
A[que[ed]] = i > n ? i % n : i;
ed--;
}
que[++ed] = i;
if(que[] > n) break;
}
ed = ;
for(int i = * n; i >= ; i--)
{
while(ed && a[que[ed]] < a[i])
{
B[que[ed] > n ? que[ed] % n : que[ed]] = i > n ? i % n : i;
ed--;
}
que[++ed] = i;
if(que[] < n) break;
}
for(int i = ; i <= n; i++)
{
if(a[i] == ma)
A[i] = B[i] = -;
}
for(int i = ; i <= n; i++)
printf("%d %d\n", B[i], A[i]); }
return ;
}

SPOJDRUIDEOI - Fata7y Ya Warda!【单调栈】的更多相关文章

  1. Spoj-DRUIDEOI Fata7y Ya Warda!

    Fata7y Ya Warda! Druid (AKA Amr Alaa El-Deen) and little EOIers have finished their training and the ...

  2. Fata7y Ya Warda! SPOJ - DRUIDEOI 单调栈

    题意:1e5个数围成一个环.现在要输出每个数左右第一个大于它的数的下标.若没有,则输出-1. 题解:单调栈板题.只是要把数据压入栈压两遍来模仿环.    具体分析:考虑一个递减的数列.要找左边最大的 ...

  3. 「日常训练&知识学习」单调栈

    这几天的知识学习比较多,因为时间不够了.加油吧,为了梦想. 这里写几条简单的单调栈作为题解记录,因为单调栈的用法很简单,可是想到并转化成用这个需要一些题目的积淀. 相关博客参见:https://blo ...

  4. HDU - 5033 Building (单调栈+倍增)

    题意:有一排建筑,每座建筑有一定的高度,宽度可以忽略,求在某点的平地上能看到天空的最大角度. 网上的做法基本都是离线的...其实这道题是可以在线做的. 对于向右能看到的最大角度,从右往左倍增维护每个时 ...

  5. Codeforces 1156E Special Segments of Permutation(单调栈)

    可以用单调栈直接维护出ai所能覆盖到的最大的左右范围是什么,然后我们可以用这个范围暴力的去查询这个区间的是否有满足的点对,一个小坑点,要对左右区间的大小进行判断,只需要去枚举距离i最近的一段区间去枚举 ...

  6. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  7. BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]

    4453: cys就是要拿英魂! Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 90  Solved: 46[Submit][Status][Discu ...

  8. BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1054[Submit][Status ...

  9. poj 2559 Largest Rectangle in a Histogram - 单调栈

    Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19782 ...

随机推荐

  1. 重构改善既有代码设计--重构手法02:Inline Method (内联函数)& 03: Inline Temp(内联临时变量)

    Inline Method (内联函数) 一个函数调用的本体与名称同样清楚易懂.在函数调用点插入函数体,然后移除该函数. int GetRating() { return MoreThanfiveLa ...

  2. Plan

    相册Gallery 标签页 Slide 播放器 Dialog 放大镜 http://sc.chinaz.com/info/130123265570.htm

  3. 【Ural】1519. Formula 1 插头DP

    [题目]1519. Formula 1 [题意]给定n*m个方格图,有一些障碍格,求非障碍格的哈密顿回路数量.n,m<=12. [算法]插头DP [题解]<基于连通性状态压缩的动态规划问题 ...

  4. [BZOJ2809&1455&1367]解题报告|可并堆

    其实非常好理解..就是可以可以合并起来的两个堆嘛>< 2809: [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依 ...

  5. Xcode变量概览-summary

    问题描述 在Xcode中断点调试时,鼠标停留在变量上,就能看到变量的信息.但对于自定义对象,通常Xcode提供的直接信息非常有限,像这样 想要了解这个对象具体的内容,需要展开左边的箭头 当开发者想要知 ...

  6. Java 9 中的 9 个新特性

    Java 8 发布三年多之后,java9已经发布了 . 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋的新功能将与 Java 9 一起发布.   1 ...

  7. Unity下实现弹簧骨骼(Spring Bone)

    关于这个效果的名称,我一直没找到一个比较正式的说法.Spring Bone这个说法是来自于Anima2D这个插件中的一个演示用的脚本,我直接译成弹簧骨骼. 一般常见于对人物的头发的模拟上. 当然也可以 ...

  8. JFinal向客户端渲染图片的方法

    JFinal提供了好几种方便的render但是不知道为啥就是没有提供直接渲染图片的render,如果我们直接在Controller的方法中往输入流中写的话是还是会有默认的render生效的,比如下面这 ...

  9. Tensorflow中使用TFRecords高效读取数据--结合Attention-over-Attention Neural Network for Reading Comprehension

    原文链接:https://arxiv.org/pdf/1607.04423.pdf 本片论文主要讲了Attention Model在完形填空类的阅读理解上的应用. 转载:https://blog.cs ...

  10. py,pyc,pyw文件的区别和使用

    熟悉python编程的都知道,python三种最常见的py文件格式,.py,.pyc,.pyw,下面说一说它们各自的使用. py文件 python最常见的文件,是python项目的源码: 文件执行时l ...