hdu 1506 dp思想的应用
来源:互联网 发布:matlab 数组横向拼接 编辑:程序博客网 时间:2024/06/07 05:52
我们要求最大矩形面积,那么我们应该求每个矩形向两边延伸的最大长度,最坏情况为0(n),必然TLE,那么我们可以应该DP的思想,用一个数组来保存一些结果。
例如,dpl【i】表示从左边过来的最长,那么我们计算dpl【i】的时候,如果左边的比自己高,那么dpl【i】=dpl【i-1】,但是可能在前面还有更多符合情况的(比i-1低但是比i高),所以我们要用i-1-dp【i-1】,继续寻找,详情看代码
#include<iostream>#include<string.h>#define LL long long using namespace std;const int maxn=100010;int dpl[maxn],dpr[maxn];LL height[maxn];int main(){LL ans;int i,j,n;while(scanf("%d",&n)&&n){for(i=1;i<=n;i++){scanf("%d",&height[i]);dpl[i]=dpr[i]=1;}for(i=2;i<=n;i++){int s=i-1;while(height[i]<=height[s]&&s>=1){dpl[i]+=dpl[s];s=s-dpl[s];//继续寻找}}for(i=n-1;i>=1;i--){int s=i+1;while(height[i]<=height[s]&&s<=n){dpr[i]+=dpr[s];s=s+dpr[s];}}ans=0;for(i=1;i<=n;i++){LL temp=(height[i]*(dpl[i]+dpr[i]-1));if(ans<temp) ans=temp;}cout<<ans<<endl;}return 0;}
- hdu 1506 dp思想的应用
- HDU 1506 DP 动态规划思想
- HDU 1506 单调栈 (dp思想)
- HDU 4055 Number String (dp的思想)
- hdu 3008 简单dp(背包的思想)
- 【HDU 1069 】Monkey and Banana 【 求LIS的思想 DP 】
- hdu 1506 Largest Rectangle in a Histogram (dp思想)
- hdu 1520 树形dp的应用
- hdu 2018 简单的凸包思想应用
- hdu-1171Big Event in HDU(dp的应用)
- HDU 4343 Interval query 倍增思想, DP
- HDU - 5794 dp + 容斥思想 + Lucas
- hdu 1506 并查集的思想
- 分治思想的应用
- 分治思想的应用
- 求和思想的应用
- 区间DP的主要思想
- BestCoder Round #82 (div.1) 1002 HDU 5677 dp-类似多重背包的思想
- [ java面试题 ] 铅笔的用处
- struts--配置各种视图转发类型(3)
- SBL-OSD-00220: Internal: pthread_mutex_trylock () failed with error.
- c/c++中怎样为指向指针的指针分配空间
- 学生管理系统常见错误总结
- hdu 1506 dp思想的应用
- Swing 在JLabel上实现连接,下划线,鼠标手型变化
- Vaadin Web应用开发教程(30):UI布局-GridLayout布局
- 微软的22道数据结构算法面试题(含答案)
- 图像处理--灰度化,二值化与反色
- HTML5能取代Android和iOS应用程序吗?
- 动态代理
- 浅谈前端开发的水有多深
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历