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

[HNOI2016] 序列

[HNOI2016] 序列 - 洛谷 P3246

看到第一眼就可以想到莫队,事实也确实如此。

假设现在的区间是 \([l, r - 1]\),要移动到 \([l, r]\),只需要管 \(r' = r, l \le l' \le r\) 的区间即可。

显然对于不同的 \(l'\),最小的值会被分成若干段,而最后一段的最小值就是 \(a_r\)。所以使用单调栈求出 \(a_r\) 前面第一个比 \(a_r\) 大的位置 \(p\),那么有贡献 \((r - p)a_r\),然后令 \(r = p\) 继续求解即可(不妨设后面递归到的位置 \(r_i\),对应 \(p_i\))。

如果 \(l = 1\),那么直接递归到最后即可,使用递推轻松解决(\(f_r = f_p + (r - p)a_r\))。问题使可能某个 \(p_i < r_i\),然后这一段被分为两节。我们只要找到这个 \(r_i\),那么答案就是 \(f_r - f_{r_i} + a_{r_i}(r_i - l + 1)\)

其实这个 \(r_i\) 也好很好找,由 \(p_i < r_i\) 可知:\(a_{r_i}\) 是 $a_{l \sim a_{r_i}} $ 中最小的;又因为这个递归中 \(a_{r_i}\) 不断减小。所以 \(a_{r_i}\) 其实就是 \([l, r]\) 中的最小值,使用 ST 表查询,然后就做完了。

时间复杂度:\(O(n \sqrt n)\)


根据这个莫队做法,实际上可以继续推出更优秀的做法。

设最小值的位置为 \(x\),那么对于 \(l' \le x \le r'\) 的最小值为 \(a_x\),贡献为 \((x - l + 1)(r - x + 1)a_x\)

对于 \(x < l'\) 的情况,由莫队算法可知,最后一定会递归到一个 \(r_i = x\),那么贡献是 \(\sum f_{r'} - f_x = (\sum\limits_{r' = x}^r f_{r'}) - (r - x + 1)f_x\),对于 \(r' < x\) 的情况是同理的。

时间复杂度:\(O(n \log n)\)

先考虑通过莫队固定 \(r = r'\),简化问题求解。然后再放开限制,分类讨论,转化为简单情况即可。(从简单到困难

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

相关文章:

  • 从噪声中聆听信号的低语:ZYNQ如何实现实时稀疏信号重构
  • Matlab CEEMDAN-CPO-VMD-PLO-Transformer-LSTM6模型单变量时序预测一键对比
  • Conda环境名称重命名:更好地组织多个PyTorch项目
  • Matlab Simulink下的柔性直流输电系统四端网络无功补偿与电压稳定控制策略
  • GitHub Issue模板设计:高效收集PyTorch项目反馈
  • PyTorch安装教程GPU加速版:适配主流NVIDIA显卡全记录
  • AI初创团队必看:用PyTorch镜像快速构建MLOps流水线
  • 【计算机毕业设计案例】基于SpringBoot的办公管理系统设计与实现员工考勤工作任务安排(程序+文档+讲解+定制)
  • Markdown绘制流程图:清晰表达PyTorch模型结构
  • amesim一维仿真:汽车热管理、空调系统及整车热管理建模指南
  • springboot宠物医院就诊美容管理系统的设计与实现_0b2b81al
  • diskinfo SMART信息解读:判断SSD是否需要更换
  • ubuntu24.04.3关机唤醒
  • 芝麻糊SSVIP 3.1.0 | 支付宝已内置模块,无root需下载两个,自动完成蚂蚁森林,庄园任务等
  • Conda环境导入导出:跨平台迁移PyTorch项目
  • 轻松运行CNN模型:PyTorch+CUDA镜像实测性能提升5倍
  • 【视频】RK3576硬编解码库安装及使用;GStreamer测试插件详解
  • 【计算机毕业设计案例】基于java的动漫网站设计与实现基于springBoot的动漫分享系统的设计与实现(程序+文档+讲解+定制)
  • 无需手动配置!PyTorch-CUDA基础镜像支持多卡并行计算
  • springboot房屋租赁信息线上管理系统的设计与实现_7o5t2mu1
  • WebRTC 连接建立流程
  • 【论文阅读28】-ChatCNC:通过大型语言模型和实时数据检索增强生成进行对话式机器监控
  • 【毕业设计】基于springBoot的动漫分享系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • PyTorch镜像预装TorchVision:计算机视觉开箱即用
  • JiyuTrainer下载与集成:基于PyTorch的可视化训练工具探索
  • 【视频】GStreamer+WebRTC(五):通过修改SDP改变webrtc数据流单双方向
  • YOLOv5模型剪枝压缩:基于PyTorch的轻量化方案
  • 电磁接收模块的噪声降低
  • Docker日志轮转配置:防止PyTorch容器日志占满磁盘
  • SSH远程连接PyTorch容器:开发者必备的高效操作方式