当前位置: 首页 > news >正文

CF1407D 题解

CF1407D - Description

\(n\) 栋楼,每栋楼有高度 \(h_i\),对于第 \(i\) 栋楼和第 \(j\) 栋楼,如果 \((i,j)\) 满足以下三个条件中的任意一个,我们认为可以从第 \(i\) 栋楼跳到第 \(j\) 栋楼:

  • \(i+1=j\)
  • \(\max(h_{i+1},h_{i+2},\cdots ,h_{j-1})<\min(h_i,h_j)\)
  • \(\min(h_{i+1},h_{i+2},\cdots ,h_{j-1})>\max (h_i,h_j)\)

问你从第 \(1\) 栋楼开始,最少跳几次能跳到第 \(n\) 栋楼?

\(2\le n\le 3\times 10^5\)

CF1407D - Solution

我们设计一个 \(f_i\) 表示从 \(1\) 走到 \(i\) 的最少步数。

对于限制 \(1\),容易得到 \(f_i=f_{i-1}+1\)

限制 \(2\) 就是说对于所有 \(i<k<j\)\(i\) 都是 \(k\) 左侧第一栋比 \(h_k\) 高的楼,\(j\) 都是 \(k\) 右侧第一栋比 \(h_k\) 高的楼。这种左边/右边第一个大于/小于的题很容易想到单调栈求出 \(lft\)\(rgt\)

我们从 \(i\) 往前找,遍历每一个 \(h_j<h_i\) 的点,如果 \(j\) 满足 \(\max\{ h_{j+1},\cdots ,h_{i-1} \}<h_j\),就可以从 \(j\) 跳到 \(i\)。我们发现这个条件就等于在讲对于 \(i\) 更新单调栈时会弹出 \(j\),于是维护单调栈的时候顺手计算就行。一个细节是如果 \(h_j=h_i\),是无法从 \(j\) 跳到 \(i\) 的,注意特判。

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long n,h[300005];
stack<int>q,qq;
long long dp[300005];
signed main(){cin>>n;for(int i=1;i<=n;i++){cin>>h[i];dp[i]=INT_MAX;}dp[1]=0;q.push(1);qq.push(1);for(int i=2;i<=n;i++){int lst=INT_MAX;while(!q.empty()&&h[q.top()]>=h[i]){dp[i]=min(dp[i],dp[q.top()]+1);lst=h[q.top()];q.pop();}if(!q.empty()&&lst!=h[i]){dp[i]=min(dp[i],dp[q.top()]+1);}q.push(i);lst=INT_MAX;while(!qq.empty()&&h[qq.top()]<=h[i]){dp[i]=min(dp[i],dp[qq.top()]+1);lst=h[qq.top()];qq.pop();}if(!qq.empty()&&lst!=h[i]){dp[i]=min(dp[i],dp[qq.top()]+1);}qq.push(i);}cout<<dp[n]<<endl;return 0;
}
http://www.gsyq.cn/news/80012.html

相关文章:

  • MySQL 筛选条件放 ON 后 vs 放 WHERE 后
  • 明天不干是小狗
  • 2025 年面膜消费指南:告别盲目囤货,10款补水保湿抗老修护爆款适配干油敏肌,精准解决护肤痛点 - 资讯焦点
  • P4064 [JXOI2017] 加法 题解
  • 北京SAT辅导机构选课指南:高分攻略与机构测评(2025最新) - 品牌测评鉴赏家
  • 第四次作业-何玮鑫
  • 【树莓派】【v4l2】在树莓派环境下取流-编码-存储
  • P4105 [HEOI2014] 南园满地堆轻絮 题解
  • [ABC241D] Sequence Query 题解
  • Prometheus + Grafana 原理和用法
  • 2025年市场技术好的不锈钢热轧板生产厂家怎么选择,304不锈钢冷热轧板材/316L不锈钢冷热轧板材定制加工有哪些 - 品牌推荐师
  • mysql优化
  • 2026考研政治肖秀荣 408真题教材 资料提供
  • 2025.12.9博客
  • ubuntu docker运行大模型
  • 托福一对一机构怎么选?高性价比推荐+避坑指南,2025备考党必看! - 品牌测评鉴赏家
  • 疫苗的“设计图纸”如何变成现实?浅谈重组蛋白技术
  • 公式怎么写
  • 2025春季 PTA 中国大学MOOC上面的数据结构测试第三题 待修正中
  • 漏洞赏金猎人不会告诉你的秘密:从100多个已报告漏洞中总结的技巧
  • 2025.12.9
  • 深入解析:用 Paimon 做实时数据湖Flink CDC Pipeline 的 Paimon Sink 实战
  • 2025年天津低烟无卤电缆生产厂家推荐:实力企业名单请收好 - 品牌2026
  • 编译树莓派AOSP
  • 再见 Heroku:我用这个开源平台,把后端成本砍掉了 80%
  • ts + react + antd Claude.md
  • 2025北京托福机构精选指南:口碑、师资、性价比全解析
  • 我们用“平台工程”取代了 DevOps 团队,云成本降低70%
  • 实用指南:学习文本大模型的学习路径,各种大模型对比和分类以及各个大模型对硬件的要求,开源大模型有哪些
  • 3580. 寻找持续进步的员工 (单调性的模板题)