题目大意
对于1 ≤ i ≤ N,给定ai。
f(i, j) (i ≤ j) 表示下标属于[i, j] 的数组成的集合中,最大元素的下标;如果有多个最大元素,取位置靠前的。
ans_k = |{(i, j) | f(i, j) = k}|
即满足f(i, j) = k 的有序数对(i, j) 的个数。
单调栈
单调栈正扫一遍反扫一遍,便可知每个位置往左与往右最远拓展位置,用乘法原理算出答案即可。
对于1 ≤ i ≤ N,给定ai。
f(i, j) (i ≤ j) 表示下标属于[i, j] 的数组成的集合中,最大元素的下标;如果有多个最大元素,取位置靠前的。
ans_k = |{(i, j) | f(i, j) = k}|
即满足f(i, j) = k 的有序数对(i, j) 的个数。
单调栈正扫一遍反扫一遍,便可知每个位置往左与往右最远拓展位置,用乘法原理算出答案即可。