题目

二分加广搜

#include <bits/stdc++.h>
using namespace std;
int n, m, l, r, p[1001][1001], vis[1001][1001];
int dx[6] = {0, 1, -1, 0, 0};
int dy[6] = {0, 0, 0, 1, -1};
int qx[100100], qy[1001001];
bool check(int d)
{
memset(vis, 0, sizeof(vis));
int front = 0, tail = 0;
for (int i = 1; i <= m; i++)
qx[++tail] = i, qy[tail] = 1;
int tot = 0;
while (front <= tail)
{
int nx = qx[front], ny = qy[front++];
if (ny == n)
tot++;
for (int i = 1; i <= 4; i++)
{
int ax = nx + dx[i];
int ay = ny + dy[i];
if (p[ay][ax] <= d && !vis[ay][ax] && (ax <= m && ax >= 1 && ay <= n && ay >= 1))
qx[++tail] = ax, qy[tail] = ay, vis[ay][ax] = 1;
}
}
if (tot == m) return 1;
return 0;
}
int main()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
scanf("%d", &p[i][j]), r = max(r, p[i][j]);
int mid = 0, ans = 0; while (l <= r)
{
mid = (l + r) >> 1;
if (check(mid))
ans = mid, r = mid - 1;
else l = mid + 1;
}
printf("%d", ans);
return 0;
}

最新文章

  1. Android之圆形头像裁切
  2. python3.5学习笔记--一个简单的图片爬虫
  3. 实现JQuery EasyUI右键菜单变灰不可用效果
  4. [Server Running] [Node.js, PM2] Using PM2 To Keep Your Node Apps Alive
  5. Delphi- 连接MySQL数据库BDE
  6. redis beforesleep
  7. CentOS系统更换软件安装源aliyun的
  8. LINUX修改IP地址
  9. js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式
  10. Java 9 揭秘(8. JDK 9重大改变)
  11. RPC----Hadoop核心协议
  12. request之LIstener监听器
  13. 设计模式—模板方法的C++实现
  14. (后端)excel设置日期格式的步骤
  15. 生产环境使用nginx做负载均衡配置的五种策略
  16. piwik custom variables
  17. 温故而知新复习下PHP面向对象
  18. MySQL添加、删除索引
  19. docker中的命令参数(小白常用)
  20. Storm-源码分析-Topology Submit-Task-TopologyContext (backtype.storm.task)

热门文章

  1. .Net Core SignalR+LayUi(1)-简单入门
  2. 使用@Async注解创建多线程,自定义线程池
  3. dp的平行四边形优化
  4. shell截取字符串操作
  5. k8s--scope.yaml
  6. 【转载】C#中int.TryParse方法和int.Parse方法的异同之处
  7. 旋转图像 给定一个 n &#215; n 的二维矩阵表示一个图像。
  8. Android为TV端助力之点击Textview无效
  9. Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
  10. ansible中的常用循环模块with_items