2022.7.21 闲话

寻找自我真的很难。

认识自我也真的很难。

已经快一年了,

却还是难以承认闲话找不到题材的事实。

也不是不承认,但是,我真的有必要写闲话吗?

不写闲话对别人会有任何影响吗?

不会。

有时不明白自己为什么还这么在意闲话。

闲话?

也许确实没用吧。


真实原因:模拟赛 too difficult to me,没闲话题材力 .

看错时间了 QAQ

不想写闲话了……放一道趣味题吧(来自 PA 2019)

Floyd-Warshall

给一个有向有权图 \(G\),问使用如下循环方式计算的最短路有多少对错误:

for (i : [1, n])
	for (j : [1, n])
		for (k : [1, n])
			chkmin(G[i][j], G[i][k] + G[k][j])

(即 \(i-j-k\) 顺序的 Floyd 算法)

\(n\le 10^3\)\(m\le 3\times10^3\) .

首先用 Johnson 算法算出全源最短路,只需要 \(\Theta(nm\log m)\),我们发现一对点对算得是对的当且仅当下面其中一个成立:

  • \(u,v\) 没有路径
  • \(u,v\) 的直接连边是最短路径
  • 在处理 \(u, v\) 之前,存在一个点 \(w\),使得 \(d(u,v)=d(u,w)+d(w,v)\),且 \(u,w\)\(w,v\) 间的最短路已经正确计算出了 .

所有满足条件的 \(w\) 可以在最短路 DAG 上传递闭包算出,那么我们只需要按顺序额外维护每个点到哪些点的距离,以及哪些点到这个点是被正确计算的即可,这个可以 bitset .

总时间复杂度 \(\Theta(nm\log m+mn^2/w)\) .

UPD. 做法来自 EI .

posted @ 2022-07-21 20:55  Jijidawang  阅读(151)  评论(6编辑  收藏  举报
😅​