因为边最多有 $100$ 条,所以有效的节点编号最多只有 $200$ 个,考虑离散化。 设离散化之后的 $P \times P$ 的邻接矩阵 $A$ ,那么不难想到这个邻接矩阵经过两条边的最短路就是 $\displaystyle B[i, j] = \min_{1 \le k \le P} {A[i, k] + A[k, j]} \notag $ 紧接着,经过三条边的最短路也不难想到。 $\displaystyle C[i, j] = \min_{1 \le k \le P} {A[i, k] + B[k, j]} \notag $ 联想到什么了吗?像乘法一样!实际上,求经过 $n$ 条边的最短路等价于一个广义“矩阵乘法”,用 $A^m$ 表示经过 $m$ 条边的最短路的话,就能表示出来一般的式子: $\displaystyle A^{a + b}[i, j] = \min_{1 \le k \le P} {A^a[i, k] + A^b[k, j]} \notag $ 于是,求几条边就相当于求“几次幂”,求幂的话当然是快速幂了。 具体到这个广义的“矩阵乘法”快速幂的话,一次“矩阵乘法”就类似于进行一次 $\mathrm{floyd}$。
题目1470 [USACO Nov07] 奶牛接力
AAAAAAAAAA
8
评论
2022-10-31 22:09:30
|