单调栈
来源:互联网 发布:dnf辅助软件 编辑:程序博客网 时间:2024/06/01 10:43
#include<cstdio>//单调栈#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;struct zp{ int v;//该节点的值 int num;//该节点之前(包括自己)大于等于自己的有几个}w[1010];int main(){ int n; while(~scanf("%d",&n)&&n) { int a,head=1,tail=0,ans=0; for(int i=0;i<n;i++) { scanf("%d",&a); int cont=0; while(head<=tail&&w[tail-1].v>=a)//栈不为空并且新值小于等于栈顶的元素 { int tmp=w[tail-1].v*(w[tail-1].num+cont);//计算面积 if(tmp>ans) ans=tmp;//更新ans cont+=w[tail-1].num;//计算在它之前有多少个之大于等于它 tail--;//栈顶出栈 } w[tail].v=a;//否则存起来 w[tail++].num=1+cont;//前面大于等于它的有多少个 } int cont=0; while(tail>0)//从栈顶到栈尾严格单调递减 { int tmp=w[tail-1].v*(w[tail-1].num+cont);//同上只不过计算的是右边的 if(tmp>ans) ans=tmp; cont+=w[tail-1].num; tail--; } printf("%d\n",ans); }}
0 1
- 单调栈 单调队列
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- WPF中一个比较完整的树形结构<TreeView>和右键菜单<ContextMenu>
- 转 支持向量机通俗导论(理解SVM的三层境界)——机器学习第一步SVM
- 选择排序
- Ajax显示当前时间(实现页面局部刷新)
- 2705: [SDOI2012]Longge的问题
- 单调栈
- GDB调试和常见段错误
- Socket、Tcp、Udp 概念区分
- Redis的哈希类型(Hash)
- web体系和tomcat的配置
- GDB的基本使用
- JAVA_SE基础——65.StringBuffer类 ②
- 如何开启远程桌面
- 用C编写的简单程序