zoukankan      html  css  js  c++  java
  • UOJ#48最大矩形面积

    题面

    这是一道标准的单调栈的题目,但是由于题目的个例性,该题对于前后两数等于的情况并无额外处理,so也确实是让这题简单了一点

    也没什么好说的直接上代码吧

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int N=500005;
    
    int n;
    long long top,ans;
    long long a[N],s[N];
    
    long long ma(long long a,long long b){return a>b?a:b;}//手写max要快一点
    
    int main(){
    	while(1){
    		ans=0;
    		scanf("%d",&n);
    		if(n==0)return 0;//停止条件
    		for(int i=1;i<=n;i++){
    			int k;
    			scanf("%lld",&k);
    			while(top>0&&a[top]>=k){//维护单调性
    				ans=ma(ans,a[top]*(i-s[top-1]-1));
    				top--;
    			}
    			a[++top]=k;//入栈
    			s[top]=i;
    			//for(int j=1;j<=top;j++){//手动调试作用。。(本人太弱不会用guide的自带调试。。)
    			//	printf("%d %d
    ",a[j],s[j]);
    			//}
    			//printf("%d
    ",ans);
    		}
    		while(top>0){//由于读完数据之后并未全部处理完,故再次处理
    			ans=ma(a[top]*(n-s[top-1]),ans);
    			top--;
    		}
    		printf("%lld
    ",ans);//输出答案
    	}
    	return 0;
    }
    

      啦啦啦就这样

  • 相关阅读:
    BOM:浏览器对象模型
    webStorm 用git上传代码(github)
    flex弹性布局
    面试题(一)
    HTTP协议···(一)
    构造函数
    断点调试
    FCC 高级算法题 库存更新
    FCC 高级算法题 收银机找零钱
    FCC 高级算法题 对称差分
  • 原文地址:https://www.cnblogs.com/hahaha2124652975/p/11191366.html
Copyright © 2011-2022 走看看