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

[QOJ4629] Longest Increasing Subsequence

[QOJ4629] Longest Increasing Subsequence

给定长度为 \(n\) 的正整数递增序列 \(a\),进行若干次如下操作:

  • 记序列 \(a\) 排序后的结果为序列 \(s\)
  • 按序遍历 \(i=1,\dots,n-1\),如果 \(s_i \neq s_{i+1}-1\),则在序列 \(a\) 的末尾加上 \(\left\lfloor \dfrac{s_i+s_{i+1}}{2}\right\rfloor\)
  • 如果序列 \(a\) 没有变化,结束操作,否则回到第一步。

求最终序列 \(a\) 的最长上升子序列。

\(n \le 10^5, a_n \le 10^{18}\)

容易发现最终的序列为排列,长度为 \(a_{n}\),肯定是没法做的。

考虑到这个问题是对一个二叉搜索树森林按层遍历的结果,我们考虑该结构的特殊性质。

画出结构,清晰起见,对于最初的序列 \(a\) 放在最上面,相邻两个数连向对应的搜索树:

alt text

这是一个理想的结构,二叉搜索树全是满的,对应序列为 \([1, 5, 13]\)

相当于走一条最长的路径,走法只有:在同层节点之间从左往右走,往更深的右儿子节点走,或者是跨越搜索树走向更深节点。

注意到可以以深度和搜索树编号为阶段划分问题,设 \(f_{i, j}\) 表示 \(a_{i}\)\(a_{i-1}\) 夹的搜索树,走到第 \(j\) 层的最右节点,所走步数的最大值。

考虑满二叉树的情况,容易发现,每棵搜索树上一定是走到该深度的极右节点是最好的。如果在该层是深度为 \(d\),则上一棵搜索树最终一定是走到 \(d\) 的深度,或者高度不足 \(d\) 而只走到最深层。由每个深度的节点数递增可证。

所以有转移:

\[f_{i, j} = f_{i-1, k}+c(i, j) (k \le j) \]

其中 \(c(i,j)\) 表示 \(i\) 树中第 \(j\) 层的节点个数。

这个转移足以应付所有搜索树均为满二叉树的情况。考虑一般情况,会在满二叉树上挂若干个叶子。

在这种情况下就不一定在最后一层直接走通,当然,如果最后一层节点非常多,也完全可以直接走通。

alt text

所以说 dp 还得特判一下这种情况,其实很简单,\(f_{i, d} \gets f_{i,d-1}+1\) 即可。但这里你还得注意是否能够从次深层的极右节点走到最深层(好像是一定的)。

用前缀 max 优化即可,复杂度 \(\mathcal O(n \log V)\)

http://www.jsqmd.com/news/1253224/

相关文章:

  • 5大AI时代必备平台:提升职场不可替代性
  • AI图像识别技术在微生物动态监测中的应用
  • AI多智能体系统在智能制造中的生产调度优化实践
  • 牙医APP软件开发可以实现哪些价值
  • C++委托构造函数:告别代码重复,实现优雅复用
  • AI错题管理系统:智能诊断与高效复习方案
  • 多智能体分布式模型预测控制(DMPC)原理与应用实践
  • Moneta亿汇:市场覆盖与外汇行业合规表达如何影响体验,给出一套要点
  • 主流小程序制作平台对比2026版:现在大家更关注多平台获客场景!
  • C++项目代码族谱构建:从静态分析到设计还原的完整实践
  • MSP430数字I/O与定时器配置详解:从寄存器原理到PWM与中断实战
  • MiniMax M2.7自进化AI模型:轻量级智能体的核心技术解析
  • 车辆出险报告 API 快速接入与调用指南
  • LLM API成本控制:租户预算、重试预算与分组路由
  • 2026九江卫生间渗水发霉最全解答!不砸砖防水靠谱吗?根治楼下渗水方法 - 宅安选房屋修缮
  • 自适应电压调节(AVS)技术:芯片能效优化的闭环控制之道
  • C++11核心特性解析:从auto到智能指针的现代化编程实践
  • 2026年口碑好的AI+财务培训机构用户力荐 - myqiye
  • Golang实现AI Agent核心架构与工程实践
  • OpenClaw:AI Agent工具抽象与函数调用机制解析
  • 企业级AI知识库的技术架构应该怎么设计?
  • Aeon.WorX对象生命周期管理:从PLM/PDM原理到制造业实战
  • 东莞市凯尼克自动化设备有限公司在高速高精密传动部件领域的技术实力如何 - myqiye
  • 2026北京市GEO平台对比指南:4个维度选对生成式搜索优化工具
  • TI ADS8353/7853 ADC评估套件深度解析:从硬件设计到性能测试实战
  • 【SkyWalking从入门到精通】第70篇:代码性能剖析(Profiling)——生产环境线程栈采样与火焰图分析
  • 2026 企业智能体投资与选型:隐性成本量化、效率复利、重构试错成本
  • SCMP培训怎么选适合自己的 - 众智商学院官方
  • 强化学习框架选型指南:RLlib、Stable-Baselines3与PyTorch对比
  • 软件供应链自主可控:源盾可信中心仓对标 Iron Bank 本土化落地指南