AcWing 830. 单调栈 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int n; int stk[N],tt; int main(){ cin.tie(0); ios::sync_with_stdio(f ...
给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。 输入格式 第一行包含整数N,表示数列长度。 第二行包含N个整数,表示整数数列。 输出格式 共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。 数据范围 1≤N≤1051≤N≤ ...
分类:
其他好文 时间:
2020-07-18 16:07:39
阅读次数:
75
501. 二叉搜索树中的众数 描述: 思路:中序遍历。 503. 下一个更大元素 II 描述: 思路:单调栈。 506. 相对名次 描述: 思路:先拍戏。再替换。 508. 出现次数最多的子树元素和 描述: 思路:后序遍历。否则叶子节点就遍历了很多次。通过hash存《和,次数》 513. 找树左下角 ...
分类:
其他好文 时间:
2020-07-13 13:31:19
阅读次数:
83
单调栈(Monotone Stack) 栈的应用中有一类问题称为单调栈(Monotone Stack)问题,可以巧妙的将某些问题的时间复杂度降到「O(n)级别」。那么什么是单调栈呢? 所谓单调栈,就是保持栈中的元素是单调的。假设把数组 [2 1 4 6 5]依次入栈,并保持栈的单调递增性,如下: 元 ...
分类:
其他好文 时间:
2020-07-12 12:07:05
阅读次数:
70
##题意 传送门 给定一个长度为$N$的整数数列,输出每个数$A_\(左边第一个比它小的数,如果不存在则输出\)-1$。 ###数据范围 $1\leq N\leq 10^{5}$ $1\leq A_ \leq 10^{9}$ ##题解 栈中存的数是单调上升的,因为后加入的数永远比前加入的数靠后,所以 ...
分类:
其他好文 时间:
2020-07-11 16:56:36
阅读次数:
55
A substring of a string T is defined as: T(i, k)=TiTi+1...Ti+k-1, 1≤i≤i+k-1≤|T|. Given two strings A, B and one integer K, we define S, a set of tripl ...
分类:
编程语言 时间:
2020-07-11 13:09:02
阅读次数:
71
刚开始想出了一个分治做法,但是比较麻烦,需要分 4 中情况讨论. 后来偷看了一眼标签发现是线段树,然后就想出了这个线段树做法. 考虑序列以 $r$ 为右端点的答案,有 $\sum_{l=1}^{i} max(l,i)-min(l,i)=i-l$. 其中这个条件可以写成 $max(l,i)-min(l ...
分类:
其他好文 时间:
2020-07-11 09:21:57
阅读次数:
70
知识点:动态规划、单调栈 LeetCode第八十五题:https://leetcode-cn.com/problems/maximal-rectangle/submissions/ 有些题目是真的难,比如这题,答案都不一定抄的明白。 语言:GoLang // 结合LeetCode 84题,逐行计算。 ...
分类:
其他好文 时间:
2020-07-07 13:03:19
阅读次数:
61
关于子数组和的问题,容易想到前缀和,但是一般前缀和还不足够优化时间复杂度。看到一个大于五个零的数组长度,我就知道这题应该只能O(n)了。然后首先想到双指针,指了半天发现中间有负数也就是左端点可能不行,但是左端点往右可能又行了,这种情况又不会处理了。这时候我想到了一种叫单调栈的东西,感觉这东西应该是能 ...
分类:
其他好文 时间:
2020-07-07 00:26:08
阅读次数:
66
分析 如果某一个栅栏能被刷完,他向左和向右延伸的宽度(包括自己)之和应该不小于刷子的宽度 \(M\),因此,我们可以先处理一下每个栅栏向左向右延伸的宽度。 两个 \(O(n)\) 单调栈搞一下 // 找出以第i个栅栏高度为基准向左向右延伸的长度 // 维护单调递增的栈,这个是向右的 head = 0 ...
分类:
其他好文 时间:
2020-07-01 12:39:20
阅读次数:
44