
单调栈
brucehb
这个作者很懒,什么都没留下…
展开
-
51nod - 1423 最大二“货”
Input 单组测试数据。 第一行有一个整数n (1 < n ≤ 10^5)。 第二行包含n个不同的整数 s1, s2, ..., sn (1 ≤ si ≤ 10^9)。 Output 输出所有子段的最大幸运值。 Input示例 5 5 2 1 4 3 5 9 8 3 5 7 Output示例 7 15 思路: 利用单调递减栈。在一个方向判断完最大值在次大值之后...原创 2017-11-12 17:38:25 · 237 阅读 · 0 评论 -
51nod - 1437 迈克步
有n只熊。他们站成一排队伍,从左到右依次1到n编号。第i只熊的高度是ai。 一组熊指的队伍中连续的一个子段。组的大小就是熊的数目。而组的力量就是这一组熊中最小的高度。 迈克想知道对于所有的组大小为x(1 ≤ x ≤ n)的,最大力量是多少。 Input 单组测试数据。 第一行有一个整数n(1≤n≤2×10^5),表示熊的数目。 第二行包含n个整数以空格分开,a1,a2,...原创 2017-11-18 23:54:42 · 443 阅读 · 0 评论 -
51nod - 1215 数组的宽度
N个整数组成的数组,定义子数组a[i]..a[j]的宽度为:max(a[i]..a[j]) - min(a[i]..a[j]),求所有子数组的宽度和。 Input 第1行:1个数N,表示数组的长度。(1 <= N <= 50000) 第2 - N + 1行:每行1个数,表示数组中的元素(1 <= A[i] <= 50000) Output 输出所有子数组的宽度和...原创 2017-11-22 00:22:06 · 357 阅读 · 0 评论 -
51nod - 1272 最大距离
给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对。每个元素和自己也可以组成一对。例如:{5, 3, 6, 3, 4, 2},可以组成11对,如下(数字为下标): (0,0), (0, 2), (1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3), (3, 4), (4, 4), (5, 5)。其中(...原创 2017-12-02 22:04:42 · 258 阅读 · 0 评论 -
51nod - 1349 最大值
有一天,小a给了小b一些数字,让小b帮忙找到其中最大的数,由于小b是一个程序猿,当然写了一个代码很快的解决了这个问题。 这时,邪恶的小c又出现了,他问小b,假如我只需要知道这些数字中的某个区间的最大值,你还能做嘛? 小b经过七七四十九天的思考,终于完美的解决了这道题目,这次,他想也让小c尝尝苦头,于是他问小c,我现在想知道存在多少不同的区间的最大值大于等于k,你还能做吗? 这次,小c犯了难,...原创 2017-10-21 22:45:33 · 319 阅读 · 0 评论 -
51nod - 1153 选择子序列
长度为N的整数数组A,所有的数均不相同,假设下标从0开始。找到一个最长的数组B,B数组的长度为K,数值范围是0 - N - 1,记录的是A数组的下标。满足A[B[0]] > A[B[1]] > A[B[2]] >...A[B[K]],并且对任意连续的两项B[i]及B[i + 1],满足min(B[i],B[i + 1]) < j < max(B[i],B[i + 1]...原创 2017-08-16 00:58:32 · 377 阅读 · 0 评论 -
51nod - 1102 面积最大的矩形
有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下: 面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 Input 第1行:1个数N,表示数组的长度(0 <= N <= 50000) 第2 - N + 1行:数组元素A[i]。(1 <= A[i] <= 10^9) Output ...原创 2017-07-04 00:49:07 · 378 阅读 · 0 评论 -
51nod - 1158 全是1的最大子矩阵
给出1个M*N的矩阵M1,里面的元素只有0或1,找出M1的一个子矩阵M2,M2中的元素只有1,并且M2的面积是最大的。输出M2的面积。 Input 第1行:2个数m,n中间用空格分隔(2 <= m,n <= 500) 第2 - N + 1行:每行m个数,中间用空格分隔,均为0或1。 Output 输出最大全是1的子矩阵的面积。 Input示例 3 3 1 1 0 1 ...原创 2017-10-30 16:43:25 · 535 阅读 · 0 评论 -
51nod - 1279 扔盘子
有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。 盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。 盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。 如图井和盘子信息如下: 井:5 6 4 3 6 2 3 盘子:2 3 5 ...原创 2018-09-11 01:37:54 · 132 阅读 · 0 评论