1 条题解
-
0
题目分析
1. 分层图结构
题目给出的特殊条件是:
$$\left\lfloor \frac{b}{k} \right\rfloor = 1 + \left\lfloor \frac{a}{k} \right\rfloor $$这意味着:
- 所有边都是从某一层连向下一层,不会跨层或回退
- 图是一个有向无环图 (DAG)
- 节点可以按层划分:第 层包含节点 (最后一层可能不满)
2. 问题转化
对于查询 :
- 设 ,
- 如果 ,则输出 (因为只能往高层走)
- 否则,路径必须经过层 ,且每步只能到下一层
3. 核心思路
用 min-plus 矩阵乘法 表示层间最短路径:
- 定义 为从层 到层 的 最短路径矩阵
- 从层 到层 的最短路径矩阵为:
其中 是 min-plus 矩阵乘法:
$$(A \otimes B)[x][y] = \min_{z} (A[x][z] + B[z][y]) $$
4. 倍增预处理
直接对每个查询做矩阵连乘太慢,使用 Sparse Table 预处理:
- 表示从层 到层 的合并矩阵
- 预处理:
- 查询时,将区间 拆成 个矩阵相乘
5. 复杂度分析
- 层数
- ,矩阵乘法
- 预处理 ≈
- 每个查询 ≈ ,总 ,可接受
6. 算法流程
- 读入数据,构建每层的转移矩阵
- 用倍增法预处理 ST 表
- 对于每个查询 :
- 计算 ,
- 如果 ,输出
- 否则用 ST 表合并 区间的矩阵
- 输出矩阵中对应位置的值
- 1
信息
- ID
- 4263
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者