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

单调栈优化DP [ROI 2018] Decryption

题意

要求把一个序列划分成很多段,要求对于每段,最大值是末项,最小值是首项。

求最小划分段数。

解法

我们贪心来思考,若我们要保证一直到 i 是合法的,左端点显然是越往左越好,但是在全局上是并没有这个性质的,所以考虑 dp;

用两个单调栈,严格单调减的 stk1, 严格单调增的 stk2。

设 dp[i] 表示划分完 1~i 的最小段数。

我们在严格单调减的栈顶往下一个就是我们最极限的往左的位置(先不考虑首项最小的性质)

之后在 stk2 upper_bound 一下这个位置,找到最极限往左的地方。

n log n 太美丽辣。

代码↓

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int MN=1e6+116;
int stk1[MN], stk2[MN], dp[MN];
int a[MN], n, top1, top2;
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>n; for(int i=1; i<=n; ++i) cin>>a[i];for(int i=1; i<=n; ++i){while(top1&&a[stk1[top1]]<=a[i]) --top1;stk1[++top1]=i;while(top2&&a[stk2[top2]]>a[i]) --top2;stk2[++top2]=i;dp[i]=dp[*upper_bound(stk2+1,stk2+top2+1,stk1[top1-1])-1]+1;}cout<<dp[n]<<'\n';return 0;
}
http://www.zskr.cn/news/13754.html

相关文章:

  • 手工调整pip whl 文件内容
  • vscode tunnel远程隧道访问 正确重启方法
  • 修复lazarus/fpc在windows不支持中文(三)总结
  • 2025工业冷水机、风冷式、螺杆式、小型、水冷式、实验室等多类型冷水机品牌排行榜,帮企业选靠谱设备
  • FreeFileSync 本地文件同步及开机自启
  • 2025 年最新留学中介机构 TOP3 权威推荐排行榜,深度解析留学机构服务特色与核心优势
  • 2025 年最新权威推荐!化妆品代工公司 TOP3 排行榜:OEM/ODM/ 一站式服务优质企业精选指南
  • 2025 年传感器品牌最新权威推荐排行榜:聚焦磁致伸缩等多类型传感器,传感器厂家选购指南!
  • MySQL数据误删或者误更新如何恢复25-9-29
  • 使用 logwatch 监控系统日志
  • 多智能体系统设计:5种编排模式解决复杂AI任务
  • 关于第一次使用latex写文章
  • tset3
  • test4
  • 2025.9.28总结
  • linux virtualenv使用
  • 实用指南:kafka详解
  • 06-基于FPGA和LTC2308的数字电压表设计-ModelSim仿真与Matlab模拟信号产生 - 详解
  • 详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功
  • 数据类型-列表
  • 智表 ZCELL:纯前端 Excel 导入导出的高效解决方案,让数据处理更轻松
  • 【MySQL 高阶】MySQL 架构与存储引擎全面详解 - 实践
  • lc1039-多边形三角剖分的最低得分
  • Spring Boot项目中集成MyBatis-Plus
  • CDBurnerXP刻录软件
  • 一些积分的题解
  • 在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名益智游戏框架需求探索
  • 2025 年东莞物流公司 TOP 物流服务推荐排行榜,东莞货运物流,东莞到全国物流,东莞大型设备物流,东莞到越南物流专线东莞大件物流,东莞整车物流公司推荐!
  • 完整教程:Python 高效实现 PDF 转 Word:告别手动复制粘贴
  • Java 包(package)