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

题解:ABC232G Modulo Shortest Path

由于 \(\forall i,a_i < m,b_i < m\),所以可能的边权要么是 \(a_i+b_j\),要么是 \(a_i+b_j-m\),下文简称其为一类边和二类边。

暴力建图太浪费了,发现与一个 \(a_i\) 的连边是二类边的 \(b_j\) 的值单调不减。

所以我们可以把所有点拆成入点和出点,简单理解为入点代表 \(b\),出点代表 \(a\)。入点按照 \(b\) 的值排序,每个排序后的入点 \(i\) 往它大的一个入点 \(i+1\) 连一条边权为 \(b_{i+1}-b_i\) 的边。这样我们只需要对于每个出点 \(a_i\),在 \(b\) 上二分出最小的 \(b_j\) 使得 \(a_i+b_j \ge m\),让 \(a_i\)\(b_j\) 连一条权值为 \(a_i+b_j-m\) 的边,就相当于处理出了 \(a_i\) 对应的所有二类边。

一类边同样处理,建一个源点,连向排序后的 \(b_1\) 对应的入点,边权为 \(b_1\),这样,只要每个出点 \(a_i\) 向这个源点连一条权值为 \(a_i\) 的边,就相当于处理出了这个出点对应的所有一类边。不难发现这样建图,一类边的处理是不会与二类边的处理相互干涉的。

最后每个入点向对应的出点连一条边权为 \(0\) 的边,跑最短路即可。
复杂度 \(O(n \log n)\),因为新图上点数和边数都是 \(O(n)\) 的。

Code

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

相关文章:

  • 如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程,附安装包)
  • 题解:P3791 普通数学题
  • 芒格变富的逻辑
  • 基于Ai元人文构想的关系图
  • Numerical results of ar-HTMDFP in AMS 2025
  • 题解:P10360 [PA 2024] Desant 3
  • 软件项目管理工具推荐|飞书项目 vs Asana vs ClickUp vs Jira
  • 11.13 模拟赛 T3
  • 再加个数学专题
  • 再加个数学专题
  • QF-Lib:用一个库搞定Python量化回测和策略开发
  • 动态路由协议
  • 软件工程学习日志2025.11.13
  • OpenCVSharp:ArUco 标记检测与透视变换
  • 2025-11-13 PQ v.Next日志记录
  • 2024年春招-美团-技术岗-第一批笔试
  • 完整教程:数值计算-线性方程组的迭代解法
  • vscode集成MCP Server
  • 2025.11.13
  • 一句话奶牛
  • 深入解析:三维旋转矩阵的左乘与右乘
  • HEVC视频扩展免费下载
  • 框架架构设计师备考第41天——软件可靠性建模、管理与设计​
  • 奇怪的问题(们)
  • 序列化概念及Jackson注解实现动态JSON响应
  • 基于多模态AI技术的传统行业智能化升级路径研究——以开源AI大模型、AI智能名片与S2B2C商城小程序为例 - 实践
  • 2025热门学宠物美容师榜:黑龙江学宠物美容师/宠物美容师培训学校毛孩精致变美秘籍!
  • react-window API完全手册:参数、方法与事件全解析 - 指南
  • 2025智慧康养/智慧养老标杆机构推荐榜:教之道五星领跑 实训室建设与虚拟仿真领域 3 家公司凭实力上榜
  • 2025氮化硼陶瓷/高温绝缘体/坩埚/套管/基板/高温构件/中子吸收材料优质厂家推荐榜:福维科五星领跑,多场景制品赋能工业升级