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

计蒜客 A1108 百度地图的实时路况

怎么要微信才能注册账号/fn

要计算删掉某个点,最短路之和。容易想到,从 Floyd 的角度考虑,就是不使用那个点为中转点。

到这里想歪了,想从最短路图来考虑。
正解是,设 \(solve(l, r)\) 表示不使用 \([l, r]\) 的点为中转点。这里考虑分治,容易从 \(solve(l, r)\) 转移到 \(solve(l, mid)\)\(solve(mid+1, r)\)

反思一下优化在什么地方。
如果枚举删除点在什么地方,再枚举中转点,显然太浪费了。
这里通过分治减少了中转点的重复枚举。

不用某个点,相当于使用一段前缀和一段后缀作为中转点。但是合并两段区间的 \(dis\) 值是困难的。用分治的方法可以做到连续段尽量少重复计算。

时间复杂度 \(T(n)=O(n^3)+2T(n/2)\),由主定理得 \(T(n)=O(n^3)\)

#define int long longint ans;
void solve(int l, int r, vector<vector<int> > &dis) {if(l == r) {upw(i, 1, n) upw(j, 1, n) if(i != l && j != l)ans += dis[i][j] < 1e18 ? dis[i][j] : -1ll;return;}vector<vector<int> > dis1 = dis, dis2 = dis;int mid = l + r >> 1;upw(k, l, mid) upw(i, 1, n) upw(j, 1, n) vmin(dis2[i][j], dis2[i][k] + dis2[k][j]);upw(k, mid+1, r) upw(i, 1, n) upw(j, 1, n) vmin(dis1[i][j], dis1[i][k] + dis1[k][j]);solve(l, mid, dis1), solve(mid+1, r, dis2);
}
http://www.jsqmd.com/news/10268/

相关文章:

  • 学生管理系统面向对象问题分析
  • dns 委派
  • 几个重要的偏微分方程(二)
  • 如何测试台式机电源
  • 「SCOI2015」小凸解密码题解
  • 折腾笔记[31]-在线转换吉卜力风格图片
  • 2025 风淋室厂家 TOP 品牌推荐排行榜,不锈钢风淋室,防爆风淋室,自动门风淋室,风淋门公司推荐
  • 完整教程:【网络安全 | 信息收集】灯塔(资产收集工具)安装教程
  • 计算机视觉的现状与未来挑战
  • #20232408 2025-2026-1《网络与系统攻防技术》实验一实验报告
  • reLeetCode 热题 100- 239. 滑动窗口最大值 队列 - MKT
  • 深入解析:三维坐标转换
  • ToDo-List EveryDay
  • 详细介绍:ArcGIS Pro字段计算器与计算几何不可用,显示灰色
  • Wails + Go + React跨平台RTSP播放器分享
  • 网络与系统攻防实验报告一 20232408李易骋1
  • [KaibaMath]1003 关于[x+y]≥[x]+[y]的证明
  • 【A】Strategy above the depths
  • 完整教程:Python 训练营打卡 Day 43
  • 实用指南:Oracle数据库笔记
  • 通过el-table 树形材料,子行数据能够异步加载
  • [KaibaMath]1002 关于[x+n]=[x]+n的证明
  • SpringBoot进阶教程(八十七)数据压缩
  • 塑料回收技术创新与可持续发展
  • 共享掩码:TFHE在打包消息上的自举技术
  • 打印
  • 实用指南:Cursor 工具项目构建指南: Web Vue-Element UI 环境下的 Prompt Rules 约束(new Vue 方式)
  • 完整教程:vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
  • VsCode 安装 Cline 插件并使用免费模型(例如 DeepSeek) - 指南
  • 2025球墨铸铁管厂家 TOP 企业品牌推荐排行榜,市政球墨铸铁管、球墨铸铁管件、防腐球墨铸铁管、给水球墨铸铁管推荐这十家公司!