201312-3(O(n)算法)
标签:计算 pop names || mes 元素 pac 算法 删掉
#include using namespace std;
//不是递增的话就删掉,然后重新计算一次
int getMaxArea(vectorint> &vec)
{
stackint> s;
int max_area = 0;
int i=0;
int tp,area_with_top;
while(i vec.size()){
if(s.empty() || vec[s.top()] //栈是空的时候,或者栈顶元素小于当前vector所出的元素
s.push(i++);
else
{
tp = s.top();
s.pop();
area_with_top = vec[tp]*(s.empty()? i:i-s.top()-1);
max_area = max(max_area,area_with_top);
}
}
while(!s.empty())
{
tp = s.top();
s.pop();
area_with_top = vec[tp] * (s.empty() ? i : i-s.top()-1);
max_area = max(max_area, area_with_top);
}
return max_area;
}
int main(){
int N;
vectorint> vec;
cin>>N;
for(int i=0;ii)
{
int val;
cin>>val;
vec.emplace_back(val);
}
cout getMaxArea(vec);
return 0;
}
201312-3(O(n)算法)
标签:计算 pop names || mes 元素 pac 算法 删掉
原文地址:https://www.cnblogs.com/zmachine/p/13721609.html
评论