HDU1506 Largest Rectangle in a Histogram
来源:互联网 发布:幼儿绘画软件 编辑:程序博客网 时间:2024/06/05 10:21
题意:计算连续的块的最大面积
开始没看清数据范围,直接暴力很自然的TLE了。。。
#include <iostream>#include<stdio.h>#include<string>#include<cstring>#include<cmath>#define N 1000009using namespace std;__int64 a[N];__int64 dp[100009];//前i个位置的最大面积int main(){ int n; while(~scanf("%d",&n)) { if(n==0)break; memset(a,0,sizeof a); for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { __int64 t=1; for(int j=i-1;j>=1;j--) if(a[j]>=a[i])t++; else break; for(int j=i+1;j<=n;j++) if(a[j]>=a[i]) t++; else break; dp[i]=a[i]*t; } __int64 ans=0; for(int i=1;i<=n;i++) //cout<<dp[i]<<" "; ans=max(ans,dp[i]); printf("%I64d\n",ans); } return 0;}
看了下别人代码,记录左边和右边满足条件的位置,然后求出左右距离就可以求出面积
#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <cmath>#include <algorithm>#define LL long long#define maxn 100010using namespace std;LL a[maxn],dp[maxn];LL le[maxn],ri[maxn];int main(){ int n; while(~scanf("%d",&n)) { if(n==0)break; for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); le[1]=1;ri[n]=n; for(int i=2;i<=n;i++) { int tt=i; while(tt>1&&a[i]<=a[tt-1]) tt=le[tt-1]; le[i]=tt; } for(int i=n-1;i>=1;i--) { int tt=i; while(tt<n&&a[i]<=a[tt+1]) tt=ri[tt+1]; ri[i]=tt; } LL ans=0; for(int i=1;i<=n;i++) { ans=max(ans,(ri[i]-le[i]+1)*a[i]); } printf("%I64d\n",ans); } return 0;}
0 0
- hdu1506 & pku2559 Largest Rectangle in a Histogram
- 【DP】 hdu1506 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- HDU1506--Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- HDU1506 ( Largest Rectangle in a Histogram ) [dp]
- HDU1506 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram (DP)
- [HDU1506]Largest Rectangle in a Histogram[dp]
- HDU1506 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram
- ZOJ1985 POJ2259 HDU1506 Largest Rectangle in a Histogram
- poj2559 & zoj1985 &hdu1506 Largest Rectangle in a Histogram(笛卡尔树)
- HDU1506--Largest Rectangle in a Histogram (动态规划)
- HDU1506 Largest Rectangle in a Histogram (动规)
- hdu1506——Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram (单调栈)
- zoj1985 hdu1506 Largest Rectangle in a Histogram (动态规划)
- HDU 3790--最短路问题(Bellman_Ford)
- putty中的一些常用操作
- ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介
- 最快的最新安装开发工具包在线安装教程
- ubuntu git 源码编译安装
- HDU1506 Largest Rectangle in a Histogram
- BOJ 5291 Girls and Boys //二分图水题
- C++[语法]将类指针传递给Dll
- JAVA下AJAX应用实例
- 如何取消文件的默认打开方式
- 华为编程大——字符串匹配
- TOJ 1401. All in All
- python基础
- HDU 1114---Piggy-Bank【一维完全背包】