Day 12
0
T1 迷宫
Solution
注意到 n 最大只有5,我们想到用线段树维护区间[l, r]从a[l][i]到a[r][j]移动的最小路径长,储存在线段树里。
具体push_up的时候枚举中点k,得到方程
update的时候直接修改a[i][j]的值,再从修改的点一路push_up就好,这样就将所有包含修改的点的区间全部更新了一遍。
query时要注意,如果要查询的区间[L, R]不完全包含在[l, mid]或[mid+1, r]中,还是要将[L,mid]和[mid+1, r]合并一下的。
合并工作和push_up一样。枚举中点k转移。
一开始拿到这道题想到是数据结构,但是没有什么思路。
问题还是在我对一些基本数据结构的理解不够深,换一种不常见使用方式就不熟悉怎么去做了…
还有,这题分块可以拿到不错的分数(80?),考试的时候也没有去尝试。