复习杂集 1
矩阵
例题 1:
题面
题目描述
给定一张由T条边构成的无向图,点的编号为1~1000之间的整数。
求从起点S到终点E恰好经过N条边(可以重复经过)的最短路。
注意:数据保证一定有解。
输入格式
第1行:包含四个整数N,T, S, E。2≤T≤100,2≤N<\(10^6\)
第2,···,T+1行:每行包含三个整数,描述一条边的边长以及构成边的两个点的编号。
输岀格式
输出一个整数,表示最短路的长度。
做法
( \(M\) 为点数)
先离散化得到 \(M\),建立 \(1 \times M\) 的矩阵,存到这个点的最短路程。
经过 \(1\) 条边的就是把这个矩阵与邻接表相乘(这里的乘法是先 \(+\) 再 \(min\))。
那么经过 \(N\) 条边就是做个矩阵快速幂( \(+min\) 乘法满足结合律)。
例题 2:
题面
A,B 是两个 \(N \times K\) 矩阵
步骤1:计算一个新的NxN矩阵C=AB。
步骤2:计算M=\(C^{N×N}\)。
步骤3:对于M中的每个元素r,计算c%6(c除以6的余数)。所有这些余数构成一个新的矩阵M'。
步骤4:计算M′中所有元素的和。
\(N \le 10^3,K \le 6\)
做法
\((A \times B)^{N \times N} = A \times (B \times A)^{N \times N -1} \times B\)
\(B \times A\) 是个 \(6 \times 6\) 矩阵,所以快速幂。

浙公网安备 33010602011771号