//一个长度为n的序列,对于一个区间中的value为这个区间的最小值乘上这个区间的所有数的和
//这就是找每一个点,找以其为最小值的区间
//显然直接暴力法找必然超时
//可以开一个单调递增栈,对于每一个新元素a[i]
//当前值小于等于栈顶元素,表示以栈顶元素为最小值的区间的右端是i
//栈顶元素a[j]出栈 , 由于是单调递增栈,新的栈顶元素a[k]必然小于a[j],故需要更新新的栈...
分类:
其他好文 时间:
2015-05-26 21:22:24
阅读次数:
134
今天在qq群了看到了这个题目,觉得用单调栈的解法挺好,可以在o(n)内搞定,特意记录下来首先明确单调栈的含义:栈是FILO的,栈的所有操作都是在栈顶进行。单调性指的是当前栈中存储的元素是严格的递增或者递减。递增:栈中元素从栈顶到栈底是严格递增的; 递减:栈中元素从栈顶到栈底是严格递减的。举例:先后入...
分类:
其他好文 时间:
2015-04-10 22:21:42
阅读次数:
122
#include
#include
using namespace std;
const int N = 100005;
struct Elem
{
long long height;
long long width;
int begin;
int count;
};
Elem stack[N];
int top;
int main()
{
int num, n;
long...
分类:
其他好文 时间:
2014-09-28 23:31:56
阅读次数:
300