2016计蒜之道复赛 百度地图的实时路况 分治+Floyd
题目链接:https://nanti.jisuanke.com/t/A1108
这道题还挺有意思的。让我对Floyd的了解又加深了一点。
首先我们重新审视Floyd这三重循环到底有什么用?第一层是枚举中间结点,第二三层是枚举路径起点和终点。那么是不是当第一层循环还没枚举到的点,此时的最短路就不会经过这这些点呢?
答案是肯定的。所以这道题也就可以做了。
题目是要求我们计算 第一层循环缺一个点的情况下 的所有最短路之和。我们当然可以枚举这个缺的点,那么时间复杂度是O(n^4)。不能接受。
那么我们可以反过来考虑不是缺点,而是考虑逐渐加点,逐渐加到缺一个点的情况然后更新答案。于是我们可以分治,分治的过程就是加点的过程。
solve(l,r)代表除了区间[l,r]的点其他点都加到最短路了,那么分治到l==r的时候就可以统计答案了。
时间复杂度O(n^2*logn)。细节详见代码:
#include<bits/stdc++.h>
using namespace std;
const int N=3e2+;
const int INF=0x3f3f3f3f;
int n,a[N][N];
long long ans; void solve(int l,int r) {
if (l==r) {
for (int i=;i<=n;i++) for (int j=;j<=n;j++)
if (i!=l && j!=l)
if (a[i][j]>=INF) ans+=-; else ans+=a[i][j];
return;
}
int mid=l+r>>; int b[N][N];
memcpy(b,a,sizeof(a));
for (int k=mid+;k<=r;k++)
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
solve(l,mid); memcpy(a,b,sizeof(b));
for (int k=l;k<=mid;k++)
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
solve(mid+,r);
} int main()
{
cin>>n;
for (int i=;i<=n;i++) for (int j=;j<=n;j++) {
scanf("%d",&a[i][j]);
if (a[i][j]==-) a[i][j]=INF;
}
solve(,n);
cout<<ans<<endl;;
return ;
}
2016计蒜之道复赛 百度地图的实时路况 分治+Floyd的更多相关文章
- 2016计蒜之道复赛 百度地图的实时路况 floyd+cdq分治
链接:https://nanti.jisuanke.com/t/11217 奉上官方题解: 枚举 d(x , y , z) 中的 y,把 y 从这个图中删去,再求这时的全源最短路即可,使用 Floyd ...
- 2016计蒜之道复赛 百度地图的实时路况(Floyd 分治)
题意 题目链接 Sol 首先一个结论:floyd算法的正确性与最外层\(k\)的顺序无关(只要保证是排列即可) 我大概想到一种证明方式就是把最短路树上的链拿出来,不论怎样枚举都会合并其中的两段,所以正 ...
- 2016计蒜之道复赛A 百度地图的实时路况
百度地图的实时路况功能相当强大,能方便出行的人们避开拥堵路段.一个地区的交通便捷程度就决定了该地区的拥堵情况.假设一个地区有 nnn 个观测点,编号从 111 到 nnn.定义 d(u,v,w)d(u ...
- 2016计蒜之道复赛 菜鸟物流的运输网络 网络流EK
题源:https://nanti.jisuanke.com/t/11215 分析:这题是一个比较经典的网络流模型.把中间节点当做源,两端节点当做汇,对节点进行拆点,做一个流量为 22 的流即可. 吐槽 ...
- 2016计蒜之道复赛B题:联想专卖店促销
题解 思路: 二分答案,设我们要check的值为x. 注意到每一个礼包都有,一个U盘,一个鼠标. 剩余的,分别为一个机械键盘,一个U盘,一个鼠标. 当礼包数目为x时,我们至多可以提供a-x个普通,b- ...
- 2018 计蒜之道复赛 贝壳找房魔法师顾问(并查集+dfs判环)
贝壳找房在遥远的传奇境外,找到了一个强大的魔法师顾问.他有 22 串数量相同的法力水晶,每个法力水晶可能有不同的颜色.为了方便起见,可以将每串法力水晶视为一个长度不大于 10^5105,字符集不大于 ...
- 2016计蒜之道初赛第四场A
在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理.有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置.网络传输性能等都要优 ...
- 2016 计蒜之道 初赛 第一场 D 青云的机房组网方案 (虚树)
大意: 给定树, 点$i$的点权为$a_i$, 求$\sum\limits_{a_i \perp a_j}dis(i,j)$ 中等难度可以枚举每条边的贡献, 维护子树内每个数出现次数$a$, 转化为求 ...
- 2019 计蒜之道 复赛 E. 撑起信息安全“保护伞” (贪心,构造,规律)
为了给全球小学员打起信息安全"保护伞",VIPKID 还建立了一套立体化的安全防御体系,7 \times 247×24 小时持续安全监控与应急响应等多项联动,具备业界最高级别的数据 ...
随机推荐
- windows开机自启mysql服务(任务计划程序+XAMPP)
需求:windows开机自启mysql服务 的需求: 相关工具:win10系统中,使用windows自带的任务计划程序 和 XAMPP软件 完成此需求 XAMPP软件介绍:此软件维护了windows中 ...
- Windows 命令提示符
命令提示符(cmd): 启动:Win+R ,输入cmd回车 切换盘符:盘符名称: 进入文件夹:cd 文件夹名称 进入多级文件夹:cd 文件夹1\文件夹2\文件夹3 返回上一级:cd .. 直接回根路径 ...
- React全栈-社交网络程序 提交表单数据
1. 给每个input 表格添加change 事件 当input 变化时触发 <div className="form-group"> <input type= ...
- CNN基础三:预训练模型的微调
上一节中,我们利用了预训练的VGG网络卷积基,来简单的提取了图像的特征,并用这些特征作为输入,训练了一个小分类器. 这种方法好处在于简单粗暴,特征提取部分的卷积基不需要训练.但缺点在于,一是别人的模型 ...
- oracle 数据库 锁
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁. 你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL session,如果这个锁表是正常业务你把se ...
- java--ArrayList,LinkedList应用比较
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListDem ...
- 数据结构---Java---HashMap---JDK1.7
源码解读 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Clone ...
- 牛客挑战赛33 F 淳平的形态形成场(无向图计数,EGF,多项式求逆)
传送门: 淳平的形态形成场 题解: 把a排序后,直接统计答案恰好为a[i]并不好做,可以统计答案>a[i]的方案数,设为\(f[i]\). 即不存在一个联通块,所有的权值都<=a[i]. ...
- 【Flutter学习】基本组件之基本滑动PageView组件
一,概述 PageView 是一个滑动视图列表,它也是继承至 CustomScrollView 的. 二,构造函数 类命构造函数(PageView) PageView 使用场景:创建一个可滚动列表 构 ...
- Android中的ImageView的scaleType属性详解
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等. 设置的方式包括: 1. 在layout xml中定义android:s ...