首页 > TAG信息列表 > P4542
P4542-[ZJOI2011]营救皮卡丘【费用流,Floyd】
正题 题目链接:https://www.luogu.com.cn/problem/P4542 题目大意 给出\(n+1\)个点\(m\)条边的无向图,\(k\)个人开始在\(0\)号点,一个人进入\(i\)号点之前必须要有人经过\(i-1\)号点,求第一个人进入\(n\)号点时所有人的最短移动距离和。 \(1\leq n\leq 150,1\leq m\leq 2\times 10^4【洛谷P4542】 [ZJOI2011]营救皮卡丘(费用流)
洛谷 题意: 给出\(n\)个点,\(m\)条边,现在有\(k,k\leq 10\)个人从\(0\)号点出发前往\(n\)点。 规定若某个人想要到达\(x\)点,则\(1\)~\(x-1\)号点都有人到达过才行。 每条边都有对应长度,问某一个人走到\(n\)点时,所有人走的路径长度和最小为多少。 思路: 直接考虑路径较为繁琐,我们可以P4542 [ZJOI2011]营救皮卡丘
传送门 分析一下题目,发现每个点必须至少走过一次,并且对于一个人的路径,他摧毁的点编号一定是递增的 并且在摧毁点 $i$ 之前,他不能经过 $i+1$ 到 $n$ 的点,考虑设 $dis[i][j],i<j$ 表示从 $i$ 到 $j$,不经过比 $j$ 大的点的最短路径 因为最终每个点都会被摧毁,那么一个人的总路程就是P4542 [ZJOI2011]营救皮卡丘(Floyd+网络流)
P4542 [ZJOI2011]营救皮卡丘 乍一看似乎没啥题相似的 仔细一看,$N<=150$ 边又是双向边,似乎可以用Floyd搞 先跑一遍Floyd处理出$dis[i][j]$ 注意到走据点要先走小的才能走大的 也就是说,$i<j<k$时,$dis[i][j]$不能从$k$转移过来 并且实际走路径时,编号也必须从小到大 于是题目转