当前位置: 首页 > 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.gsyq.cn/news/177363.html

相关文章:

  • 医疗领域大数据文本分析的挑战与突破
  • HuggingFace Dataset加载本地数据:配合PyTorch训练
  • Markdown生成PDF文档:PyTorch技术报告输出
  • PyTorch官方安装太慢?切换国内镜像源提速90%
  • 地下工程里浆液扩散就像血管里的微循环,搞不好就变成“血栓“堵塞。老魏那本注浆圣经里说的变质量渗流,用COMSOL整活起来特别带感——咱们直接上硬菜
  • 计算机Java毕设实战-基于SpringBoot的高校综合医疗健康服务管理系统设计与实现诊室管理、健康档案管理、学习培训管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • GitHub Issue模板设计:高效收集PyTorch项目反馈
  • ubuntu24.04.3关机唤醒
  • 【论文阅读28】-ChatCNC:通过大型语言模型和实时数据检索增强生成进行对话式机器监控
  • PyTorch镜像预装TorchVision:计算机视觉开箱即用
  • Docker Compose启动PyTorch服务超时?资源配置建议
  • PyTorch-CUDA-v2.8镜像支持Intel oneAPI加速库集成
  • (加交叉验证)基于XGBoost的数据多变量回归预测 (多输入单输出)
  • PCIe-Transaction Descriptor – Traffic Class Field
  • (加交叉验证)基于1D-CNN的数据多变量回归预测 (多输入单输出)
  • Git submodule管理子模块:整合多个PyTorch项目
  • 2025年度回顾——AI大模型技术总结与成长之路:AI应用与个人成长的深度复盘
  • 计算机Java毕设实战-基于SpringBoot的公司办公考勤工作任务安排管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Diskinfo监控GPU服务器磁盘IO:保障大规模训练稳定性
  • SSH multiplexing复用连接:频繁登录PyTorch服务器更高效
  • 解析Agentic AI在客户服务提示工程中的优化策略
  • 用Conda还是Docker?PyTorch环境配置对比分析
  • Jupyter Notebook主题美化:改善长时间编码视觉体验
  • java学习--第三代日期时间
  • PyTorch DataLoader num_workers调优:平衡CPU与GPU负载
  • OpenAI探索广告变现与人才布局,千问引领AI生态变革,Trae月活破160万
  • 了解SVG
  • Git Commit规范助力AI开发:结合PyTorch项目的版本管理技巧
  • 2025年降AI工具实测大盘点:为了拯救AI率爆表,亲测这5款降AI工具,免费解决ai率高的烦恼
  • GitHub Discussions社区互动:解答PyTorch用户疑问