洛谷上做过一道一样的题(P1719 最大加权矩形),但是没写博客...

现在已一个新高度来看待这题,沿用以前的方法,感觉很好(草稿纸模拟数小时后20分钟AC)

就是对于每一个位置,记录能够往右延伸多远。

然后反着做一遍,记录能向左多远。

单调栈算法。

当然也有扫一遍即可的算法,但是写着烦,就没写。

 #include <cstdio>
using namespace std;
const int N = ;
typedef long long LL; LL Q[N], t, h[N], l[N]; inline void max(LL &a, const LL b) {
if(a < b) a = b;
return;
} int main() {
int n;
while(scanf("%d", &n)) {
if(n == ) {
break;
}
t = ;
for(int i = ; i <= n; i++) {
scanf("%lld", &h[i]);
}
h[n + ] = ;
for(int i = ; i <= n + ; i++) {
Q[++t] = i;
while(h[Q[t - ]] > h[i]) {
l[Q[t - ]] = i - Q[t - ] - ;
Q[t - ] = Q[t--];
}
}
t = ;
for(int i = n; i >= ; i--) {
Q[++t] = i;
while(h[Q[t - ]] > h[i]) {
l[Q[t - ]] += (Q[t - ] - i);
Q[t - ] = Q[t--];
}
}
long long ans = ;
for(int i = ; i <= n; i++) {
max(ans, h[i] * l[i]);
}
printf("%lld\n", ans);
}
return ;
}

AC代码

最新文章

  1. [codevs1743]反转卡片
  2. 如何正确响应ArcGIS JavaScript API中图形的鼠标事件
  3. C# 将容器内容转成图片导出
  4. (原创)mybaits学习三,springMVC和mybatis融合
  5. 最长公共上升子序列(codevs 2185)
  6. C# winform 右下角弹出窗口结果
  7. Linux修改 DNS
  8. 一、Solr综述
  9. 【LeetCode题意分析&amp;解答】37. Sudoku Solver
  10. JavaScript - 平稳退化
  11. linux-ubuntu下fastQC的安装
  12. Eclipse中Spring插件的安装
  13. lambda高级进阶--表达式参数
  14. 【SAP HANA】SAP HANA开篇(1)
  15. LG3211 [HNOI2011]XOR和路径
  16. day_3各种数据类型与各种运算符
  17. Linux基础实操六
  18. 第85讲:Scala中For表达式的强大表现力实战
  19. activiti复盘重推的一种简单实现方式:
  20. 小朋友学Java(2):Win 7安装JDK

热门文章

  1. oss上传和下载的笔记
  2. jq简单仿上传文件
  3. Java多线程之单例模式(线程安全)
  4. Lodop纯文本英文-等符号自动换行问题
  5. 基于create-react-app的再配置
  6. Kafka消费时报错:Producer connection to xxx:9092 unsuccessful
  7. 洛谷3704 [SDOI2017] 数字表格 【莫比乌斯反演】
  8. Github Desktop 克隆新项目 Authentication failed. You may not have permission to access the repository or the repository may ha
  9. MT【259】2016天津压轴题之最佳逼近
  10. Hdoj 1421.搬寝室 题解