一队士兵来到了敌军城外,准备进攻敌城。敌人在城外布置一个防御迷阵,要进入城池首先必须通过城池外的防御迷阵。

迷阵由n*m个相同的小房间组成,每个房间与相邻四个房间之间有门可通行。而第1行的m个房间有m扇向外打开的门,是迷阵的入口。除了第1行和第n行的房间外,每个房间都安装了激光杀伤装置,将会对进入房间的人造成一定的伤害。第i行第j列造成的伤害值为a[i,j]。 (第1行和第n行的a值全部为0)。

现在士兵打算以最小伤害代价通过迷阵,显然,他们可以选择任意多的人从任意的门进入,但必须到达第n行的房间。一个士兵受到的伤害值为他在经过的路径上所有房间的伤害值中的最大值。现在,士兵们掌握了迷阵的情况,他们需要提前知道怎么安排士兵的行进路线可以使得伤害值最小。

输入

第一行有两个整数n,m表示迷阵的大小。 接下来n行,每行m个数,第i行第j列的数表示a[i,j]。 数据范围:n,m≤1000,a[i,j]≤1000

输出

输出一个数,表示最小伤害代价。

样例

输入

 4 20 0 3 5 2 4 0 0 

输出

3

二分+宽度优先搜索

#include<bits/stdc++.h>
using namespace std;
int a[1010][1010];//地图
int n,m;
int l=INT_MAX,r=INT_MIN,mid;
int q[1000100][3];
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
bool f[1010][1010];
bool jud(int v)
{memset(f,false,sizeof(f));int h=1,t=1;//指针q[1][1]=1;//xq[1][2]=1;//yf[1][1]=true;//标记走过int tx,ty;while(h<=t){for(int i=0;i<4;i++){tx=q[h][1]+dx[i];ty=q[h][2]+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!f[tx][ty]&&a[tx][ty]<=v)//可以走{t++;q[t][1]=tx;q[t][2]=ty;f[tx][ty]=true;//标记走过if(tx==n)//通过return true;}}h++;}return false;
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>a[i][j];if(i!=1&&i!=n){l=min(l,a[i][j]);r=max(r,a[i][j]);}}while(l<=r){mid=l+r>>1;//如果能通过,减少伤害值再次尝试if(jud(mid))r=mid-1;else l=mid+1;}cout<<l<<endl;return 0;
}

3、防御迷阵(二分+bfs)相关推荐

  1. 二分+BFS——刺杀大使(洛谷 P1902)

    题目选自洛谷P1902 我们在题面中看到了最大值最小 这五个字. 很容易就想到了二分答案. 同时题目涉及图,以及只能从四个方向,所以想到了BFS的解法 将这两种方法一起使用,就得到了答案! 题目描述 ...

  2. hiho_1139_二分+bfs搜索

    题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值.  题目链接:二分      最小化最大值,考虑采用二分搜索.对所有的边 ...

  3. HDU 5652 India and China Origins(二分 + BFS)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5398867.html 题意: 中国和印度之间有一片地方,把这片地方抽象化,于是就可以看成一个N * M矩阵,其中黑色的代表 ...

  4. [USACO13FEB]Tractor【二分 + BFS】

    Pro Luogu3073 Sol 好水的一道题啊--直接二分答案就可以过,不需要并查集的,二分加广搜,时间复杂度是O(n^2 logM),能过的. 读完题,我们很容易的就能知道,答案满足单调性,也就 ...

  5. codeforces 553D Nudist Beach 二分+bfs

    題意: 給你n个点,然后让你选出一些点,使得每个点的比率最小值尽量大,让你输出你所选的点. 其中有m个点是不能选的.k条无向边,连接着点与点,保证只有一个连通块). 点x的比率= (点x的邻居,且在你 ...

  6. Codeforces Round #309 (Div. 1)D. Nudist Beach 二分+bfs

    题目:http://codeforces.com/contest/553/problem/D 在一个无向图中,有若干坏点,选择一个不包含坏点的集合,使得集合中p值最小的点的p值最大.一个点的p值=集合 ...

  7. 2019长沙学院新生赛(A水,B水,C(整除分块),D水,E(巧数学),F(二分+bfs),H(换根dp),I(线段树)J(dp+倍增+lca))

    A-XOR SUM 通过简单观察得知连续四个数的异或值就是等于0,暴力找出左区间和右区间就可以了,最多跑四个单位 0^1^2^3==0   4^5^6^7=0 #include<bits/std ...

  8. codeforces #309 D D. Nudist Beach(浮点数二分+bfs)

    题目链接: 点击打开链接 题目大意: 给出一个连通图选取一个子图,给出不能被选中点,每个点的值为(子图的度数/总度数),求一个最小值最大的子图 题目分析: 很显然这是一个二分图,因为如果存在x能选出子 ...

  9. 洛谷P1902 刺杀大使(二分答案+bfs验证)

    题目描述 伊朗伊斯兰革命卫队(某恐怖组织)正在策划一起刺杀行动,他们的目标是沙特驻美大 使朱拜尔.他们来到了沙特驻美使馆,准备完成此次刺杀,要进入使馆首先必须通过使馆前 的防御迷阵. 迷阵由 n*m ...

最新文章

  1. Expect 教程中文版
  2. 有种软件你不得不备着,那就是数据恢复类软件
  3. 数据流图软件_软件工程导论知识点梳理之概念题
  4. Android官方开发文档Training系列课程中文版:后台加载数据之使用CursorLoader进行查询
  5. AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
  6. HDMIARC是什么
  7. B: Break Prime
  8. PAIP批量改名JS实现
  9. IAR Embedded WorkBench FOR 8051破解
  10. 杭电OJ 1094(C++)
  11. php微信定位功能,JavaScript微信定位功能实现方法
  12. 进击ReactNative-徐如林-React源码解析
  13. python怎么变成动图_python 生成动图
  14. Python基础之面向对象知识创建一个游戏角色
  15. HTML5实现3D校园地图思路
  16. JMockit 介绍 4 使用JMockit运行测试
  17. MVCC和快照读丶当前读
  18. 2022-2028年中国海南省在线旅游产业发展动态及投资前景分析报告
  19. 碗碗腔《杨贵妃》、青春版秦腔《杨门女将》在上海舞台上演
  20. 求和计算机教案,小学信息技术《自动求和》教案

热门文章

  1. openCV之waitKey函数简介
  2. 【运营】0-1搭建自媒体用户运营分析报告——以B站为例
  3. centos7免密登录
  4. matlab中图线颜色大全
  5. python3学习笔记
  6. Clickhouse 分析分布式表的各类指标
  7. 用SerialNumber生成流水号
  8. 深度学习笔记(五):深度学习卷积核的计算理解,小卷积核和大卷积核的转换比较
  9. 【文献阅读1】Comparative cytological and transcriptomic analysis of pollen development in autotetraploid a
  10. must be of typexxx解决方法