让你计算所有连续子序列的最大值-最小值的和. (单调栈) 对于一个数Ai来讲,如果其有贡献的价值,要么是-Ai作为最小值,要么是Ai作为最大值. 那么Ans=ΣAi*maxn-Ai*minn. void work() { top=,S[]=P(N,); F(i,,n) { while(S[top].first<=a[i])top--; l[i]=S[top].second+; S[++top]=P(a[i],i); } top=,S[]=P(N,n+); for(int i=n;i;i--) {…