`
java-mans
  • 浏览: 11710350 次
文章分类
社区版块
存档分类
最新评论

hdu 1506 最大长方形 不错的DP

 
阅读更多

#include<stdio.h>
__int64 a[100005];
__int64 pre[100005];
__int64 next[100005];
int main()
{
__int64 n,i;
__int64 max,mid;
while(scanf("%I64d",&n))
{
if(n==0) return 0;
max=-1000000;
for(i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
next[i]=pre[i]=i;
}
for(i=0;i<n;i++)
{
while(pre[i]>0&&a[pre[i]-1]>=a[i])/*pre[i]>0 这个条件不要搞错 注意临界点是1 对于下面的式子0 没有意义*/
{
// pre[i]=pre[i]-1; // 这样会超时
pre[i]=pre[pre[i]-1];

}
}
for(i=n-2;i>=0;i--)
{
while(next[i]<n-1&&a[next[i]+1]>=a[i])
{
// next[i]=next[i]+1;
next[i]=next[next[i]+1];
}
}
for(i=0;i<n;i++)
{
mid=(__int64)(next[i]-pre[i]+1)*a[i];//中间过程的加法运算前面 必须要进行强制性类型转换 因为可能会相乘溢出
if(max<mid) max=mid;
}
printf("%I64d\n",max);
}
return 0;
}

分享到:
评论

相关推荐

    HDU DP动态规划

    【标题】"HDU DP动态规划"涉及到的是在算法领域中的动态规划(Dynamic Programming,简称DP)技术,这是解决复杂问题的一种高效方法,尤其适用于有重叠子问题和最优子结构的问题。动态规划通常用于优化多阶段决策...

    HDU DP 题集

    动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,...

    ACM HDU题目分类

    DP(Dynamic Programming,动态规划)是一种非常重要的算法思想,在 ACM HDU 题目分类中,DP 问题占据了很大的比例。例如,1003 DP 经典问题,最大连续子段和;1024 经典 DP,最大 M 子段和;1025 经典 DP,最长递增...

    HDU DP题解

    HDU上DP大集合,里面包括题,题解,代码,对DP入门者很实用,对DP老手也是有很大的提高

    hdu.rar_hdu

    HDU(杭州电子科技大学在线评测系统)是一个深受程序员喜爱的在线编程练习平台,它提供了丰富的算法题目供用户挑战,帮助他们提升编程技能和算法理解能力。"hdu.rar_hdu"这个压缩包文件很可能是某位程序员整理的他在...

    HDU_2010.rar_hdu 2010_hdu 20_hdu acm20

    【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...

    HDU题目java实现

    【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...

    DP.rar_DP_hdu_动态规划_动态规划 C++

    标题中的“DP.rar”表明这是一个关于动态规划的资料压缩包,而“DP_hdu”暗示了这些题目可能来自杭州电子科技大学(HDU)的在线编程平台。动态规划通常用于解决那些可以通过子问题的最优解来构建原问题最优解的问题...

    hdu1250高精度加法

    ### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...

    acmhdu1005

    hdu 1005.比较简单的一道题,有兴趣的可以看看。

    hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj

    【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...

    HDU1059的代码

    HDU1059的代码

    hdu1001解题报告

    hdu1001解题报告

    hdu 1257 最低拦截系统 lis

    - **求解结果**:遍历整个数组,取`dp`数组中的最大值即可得到最长递增子序列的长度。 ### 代码实现分析 提供的代码实现了上述思路: ```c #include int main() { int n, i, j, max, a[1100], dp[1100]; while ...

    hdu 1574 passed sorce

    hdu 1574 passed sorce

    hdu动态规划算法集锦

    题目链接:[LargestRectangle](http://acm.hdu.edu.cn/showproblem.php?pid=1506) - **问题描述**:求直方图中最大的矩形面积。 - **解题思路**: - 使用单调栈辅助计算。 - 定义状态$Area = height[i] * (j - k ...

    杭电ACMhdu1163

    4. **数学应用**:很多ACM题目需要应用到基础数学知识,例如数论(模运算、最大公约数、最小公倍数)、组合数学(排列组合、容斥原理)、概率论等。 5. **贪心策略**:部分题目可以通过贪心算法求解,即每次做出...

    hdu2101解决方案

    hdu2101AC代码

    HDU acm-PPT课件

    【ACM入门与提高:HDU ACM竞赛课程详解】 ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,简称ICPC或ACM/ICPC)是一项全球性的竞赛,旨在激发大学生对计算机科学的兴趣,提升他们的...

    ACM HDU

    【ACM HDU】指的是在ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)中,参赛者在杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的在线评测系统上完成并已解决的题目集合...

Global site tag (gtag.js) - Google Analytics