hdu 1506 最大子矩阵面积
2024-10-06 15:14:25
//写动态规划的题目 要把主要问题提炼出来 这里的问题就是求area=(j-k+1)*a[i] 如果找到j k是解决这个题目的关键 这里暴力求肯定是要超时的 这里用dp来优化 #include<stdio.h>
#include<string.h>
__int64 a[100005],dp[100005],l[100005],r[100005];
int main()
{
__int64 n,i,t,max;
while(scanf("%I64d",&n)!=EOF&&n)
{
max=-1;
for(i=1;i<=n;i++)
scanf("%I64d",&a[i]);
l[1]=1;r[n]=n;
for(i=2;i<=n;i++)//求每个点左边连续比它大的最左边的下标,保存在l[]数组里
{
t=i;
while(t>1&&a[i]<=a[t-1])
t=l[t-1];
l[i]=t;
}
for(i=n-1;i>=1;i--)//求每个点右边连续比它大的最右边的下标,保存在r[]数组里
{
t=i;
while(t<n&&a[i]<=a[t+1])
t=r[t+1];
r[i]=t;
}
for(i=1;i<=n;i++)
if((r[i]-l[i]+1)*a[i]>max)
max=(r[i]-l[i]+1)*a[i];
printf("%I64d\n",max);
}
return 0;
}
最新文章
- Linux SHELL 命令入门题目答案(一)
- IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
- 我所了解的WEB开发(4) - 神奇的URL
- Java模拟登陆新浪微博抓取数据【转载】
- 查看本机IP地址及子网掩码(netmask)
- 【HDOJ】2157 How many ways??
- UCOS 信号量
- C# 操作 AppSettings节点
- Android Monkey压力测试介绍
- Nagios状态长时间处于Pending的解决方法
- [HNOI2004]树的计数
- iOS 隐藏导航条分割线
- c#简单的数据库查询与绑定DataGridView。
- element-ui 的el-button组件中添加自定义颜色和图标
- 【已解决】ERR_BLOCKED_BY_XSS_AUDITOR:Chrome 在此网页上检测到了异常代码:解决办法
- WinSockets编程(六)select模式
- JAVA特性-跨平台/面向对象
- UC 优视发布“UC+”开放平台
- C#和JAVA 访问修饰符
- Chrome 声音自动播放抱错问题【play() failed】