当前位置: 首页 > 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.hskmm.com/?act=detail&tid=20552

相关文章:

  • 上海住宅新规调整,背后的野心可大了
  • 魔兽争霸3冰封王座安装包下载
  • vscode tunnel远程隧道访问 正确重启方法
  • PS时文本框图层如何与图片图层水平中心对齐
  • AI两周手搓一个进度管理神器,快来安排你的国庆假期吧
  • MX 练石 2025 NOIP #10
  • 读人形机器人26人类情感
  • 岐金兰AI元人文构想的全面系统研究——声明ai研究
  • Amazon Q Developer扩展安全漏洞分析与修复指南
  • 价值共生的语法革命:从“悬荡悟空”到“元人文构境”
  • 2025工业冷水机、风冷式、螺杆式、小型、水冷式、实验室等多类型冷水机品牌排行榜,帮企业选靠谱设备
  • FreeFileSync 本地文件同步及开机自启
  • 2025登车桥生产厂家最新推荐榜单:聚焦月台登车桥、装卸登车桥、卸货平台登车桥、10吨登车桥产品,精选五家实力企业助力采购
  • 2025 年最新留学中介机构 TOP3 权威推荐排行榜,深度解析留学机构服务特色与核心优势
  • 2025 年最新权威推荐!化妆品代工公司 TOP3 排行榜:OEM/ODM/ 一站式服务优质企业精选指南
  • 2025年中国超声波清洗机源头厂家最新权威推荐排行榜:聚焦核心优势精选超声波清洗机品牌助力企业选购
  • 2025 年传感器品牌最新权威推荐排行榜:聚焦磁致伸缩等多类型传感器,传感器厂家选购指南!
  • 2025 年杭州画室推荐:之江画室 —— 央清班十年口碑加持,设计学录取亮眼的专业美术培训之选
  • 从流程适配到合规校验:AI赋能智能工单5天交付全流程
  • Tabnine+Sourcery协同:企业级动态仪表盘4天落地的底层逻辑
  • MySQL数据误删或者误更新如何恢复25-9-29
  • 使用 logwatch 监控系统日志
  • 多智能体系统设计:5种编排模式解决复杂AI任务
  • 无刷电机关键参数的测量方法详解
  • 【SimpleFOC】区分BLDC霍尔安装间隔60还是120
  • 4 个支持在线编辑的PPT模板网站,不用下载软件!
  • [GenAI] 提示词工程
  • 关于第一次使用latex写文章
  • res := model.UserConsume{}与res := model.UserConsume{}区别