hw20240919
防护设备
NxN 迷宫,左上–右下。上下左右四个方向移动,从每个格子移动到相邻格子所需要的时间是1个单位,他必须用最多 K个(也可以少于K个)单位时间到达右下格子。迷宫的每个格子都有辐射值,配送员必须穿着防护能力不低于相应辐射值的防护服,才能通过该格子。他希望知道,防护服的防护能力最少要达到多少,他才能顺利完成任务。注意:配送员需要通过迷宫的左上角和在下角,因此防护服的防护能力必须大于等于这两个格子的辐射值
解答要求
时间限制:C/C++1000ms,其他语言:2000ms
内存限制: C/C++256MB,其他语言:512MB
输入
前两行各包含一个正整数,分别对应 N 和K,后 N 行各包含 N 整数,以空格分隔,表示地图上每个位置的辐射值。2≤ N ≤ 100 。 K ≥2N - 2,以保证题目有解。所有辐射值都是非负整数,绝对值不超过
1
0
4
10^4
104
输出
一个整数,表示配送员穿着防护服的最低防抑能加。
样例1
输入:
2
2
1 3
2 1
输出:2
解释:配送员可以选择通过左下角(辐射值为2)的路线,耗费2单位时间。
样例2
输入:
5
12
0 0 0 0 0
9 9 3 9 0
0 0 0 0 0
0 9 5 9 9
0 0 0 0 0
输出:3
思路
二分辐射值+bfs,每个格子记录下到达的最小步数,剪枝:1.可以知道下一个位置到终点的最小步数,若当前步数加剩余最小步数大于k就不走这,2.可以dp知道下一个位置的右下角方块的最小辐射值,若这个最小辐射值大于当前二分的辐射值也不走,3.下一个位置走过且到其最小步数小于当前步数
在这里插入代码片
3630






