题目传送
题目描述
对于给定由 n 个元素构成的数组。一个子数组的不平衡值是这个区间的最大值与最小值的差值。数组的不平衡值是它所有子数组的不平衡值的总和。
以下是数组[1,4,1]不平衡值为9的例子,共有6个子序列:
[1] (从第一号到第一号)不平衡值为 0;
[1, 4] (从第一号到第二号), 不平衡值为 3;
[1, 4, 1] (从第一号到第三号),不平衡值为 3;
[4] (从第二号到第二号),不平衡值为 0;
[4, 1] (从第二号到第三号),不平衡值为 3;
[1] (从第三号到第三号)不平衡值为 0;
输入输出样例
3
1 4 1
9
思路:
我们可以维护四个单调栈,一个是当前 i i i直到 m a x l 和 m a x r maxl和maxr maxl和maxr都是最大值,一个是当前 i i i直到 m i n l 和 m i n r minl和minr minl和minr都是最小值,这样一来,用长度*当前的值就求出这个点当最大或最小值能获得多少价值(最小是负数),这样一看就不会那么无头绪(注意判重)
代码:
#