CCF1166 1166. 回家 (Standard IO)

时间限制: 1000 ms 空间限制: 262144 KB 具体限制

题目描述
Alice住在森林里,森林可以看作是N*M的网格,森林里有怪兽,用‘.’表示空地,‘+’表示怪兽,‘V’表示Alice现在的位置,‘J’表示Alice的家。
Alice可以从当前单元格向上下左右相邻单元格移动,有怪兽的地方也可以走,只不过比较危险,有怪兽的单元格对其他单元格会产生一定的危险系数,假设怪兽位置为(A,B),它对某单元格(R,C)的危险系数为:|R-A|+|C-B|,危险系数越小越危险,每个单元格的危险系数是所有怪兽对它产生的系数的最小值。
Alice请你帮她找一条最佳路径回家,即使得路径上经过单元格的最小的危险系数最大。

输入
输入第一行包含两个整数N和M(1<=N,M<=500),表示森林的大小。
接下来N行每行包含M个字符:‘.’,‘+’,‘V’,‘J’。
输入只包含一个‘V’和‘J’,而且至少有一个‘+’。

输出
输出最佳路径中最小的危险系数。

样例输入
输入1:
4 4
+。。。
。。。。
。。。。
V。。J
输入2:
4 5
。。。。。
。+++。
。+。+。
V+。J+

样例输出
输出1:
3
输出2:
0

数据范围限制
1<=N,M<=500
广搜每个怪兽点,求出每个点的危险系数,注意:一个点第一次广搜到的值为它的危险系数,再二分答案,每次使用深搜check结果对错
AC代码


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
bool dl[505][505],kz[505][505];
int mon[250005][2],x,y,fx[4]={
   1,0,-1,0},fy[4]={
   0,1,0,-1},z,v,len,wx[505][505],n,m,ans=0;
char mp[505][505];
void dfs(){
   //二分答案+DFS求出最小危险系数的最大值
	mon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值