题目链接:

https://www.luogu.org/problem/show?pid=2658

题意:

题解:

二分D,BFS判断是否可以到达全部路标。
很有道理啊,为什么T啊!

代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 #define MS(a) memset(a,0,sizeof(a))
 5 #define MP make_pair
 6 #define PB push_back
 7 const int INF = 0x3f3f3f3f;
 8 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;
 9 inline ll read(){
10     ll x=0,f=1;char ch=getchar();
11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
12     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
13     return x*f;
14 }
15 //
16 const int maxn = 500+10;
17
18 int n,m,sx,sy,sum;
19 int G[maxn][maxn],is_p[maxn][maxn],vis[maxn][maxn];
20 int dx[4] = {0,0,1,-1};
21 int dy[4] = {1,-1,0,0};
22
23 struct node{
24     int x,y;
25 };
26
27 bool ok(int x,int y){
28     return x>=1 && x<=n && y>=1 && y<=m && !vis[x][y];
29 }
30
31 bool check(int x){
32     MS(vis);
33     queue<node> q;
34     q.push(node{sx,sy}); vis[sx][sy] = 1;
35     int cnt = 1;
36     while(!q.empty()){
37         node now = q.front(); q.pop();
38         for(int i=0; i<4; i++){
39             int tx=now.x+dx[i];
40             int ty=now.y+dy[i];
41             if(ok(tx,ty) && abs(G[tx][ty]-G[now.x][now.y]) <= x){
42                 vis[tx][ty] = 1;
43                 q.push(node{tx,ty});
44                 cnt += is_p[tx][ty];
45                 if(cnt == sum) return true;
46             }
47         }
48     }
49     // return cnt == sum;
50     return false;
51 }
52
53 int main(){
54     n=read(),m=read();
55     int mi=INF,mx=-1;
56     for(int i=1; i<=n; i++)
57         for(int j=1; j<=m; j++){
58             G[i][j]=read();
59             mi=min(mi,G[i][j]);
60             mx=max(mx,G[i][j]);
61         }
62     for(int i=1; i<=n; i++)
63         for(int j=1; j<=m; j++){
64             is_p[i][j]=read();
65             sum += is_p[i][j];
66             if(is_p[i][j]) sx=i,sy=j;
67         }
68
69     int L=0,R=mx-mi,ans=0;
70     while(L<=R){
71         int mid = (L+R)/2;
72         if(check(mid)) ans=mid,R=mid-1;
73         else L=mid+1;
74     }
75
76     cout << ans << endl;
77
78     return 0;
79 }

转载于:https://www.cnblogs.com/yxg123123/p/6827627.html

洛谷2658 汽车拉力比赛 二分相关推荐

  1. 洛谷2658 汽车拉力比赛

    洛谷2658 汽车拉力比赛 本题地址: http://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M* ...

  2. 洛谷—— P2658 汽车拉力比赛

    https://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ...

  3. 洛谷P2658 汽车拉力比赛

    题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者希 ...

  4. 洛谷——P2658 汽车拉力比赛

    P2658 汽车拉力比赛 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些 ...

  5. 洛谷月赛:最后的狂欢 汽车拉力比赛

    本题地址: http://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ ...

  6. P2658 汽车拉力比赛 - 普及+/提高-二分+搜索

    P2658 汽车拉力比赛 思路:刚开始我就写了一个把路标的四个方向最小的值 的 最大值输出来,答案就能得到90分哈哈哈,但这是不正确的做法 还是AC不了! 自己也是没做出来 . 这个题用到了搜索+二分 ...

  7. P2658 汽车拉力比赛

    题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者 ...

  8. 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA

    洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...

  9. scau 8616 汽车拉力比赛

          上次我们过了二分图的最佳匹配,现在我们看一道题目,经典的二分图的最佳匹配题目 8616 汽车拉力比赛 时间限制:500MS  内存限制:1000K 提交次数:71 通过次数:24 题型: ...

最新文章

  1. STC自动高速下载线
  2. 千锋教育python全集_千锋python+人工智能最新视频教程(大全集)
  3. java怎么看提示错误,Mabatis错误提示Parameter index out of range的处理方法
  4. JavaScript 框架这一年:React、Angular 们正在互相渗透
  5. Framework4.0 IIS7下urlrewriter设置问题
  6. 大热的麦克风阵列语音识别系统的设计和轻松实现,提供软硬件解决方案
  7. windows之2012缺少api-ms-win-crt**.dll
  8. c语言枚举法在单片机的应用领域,当前单片机主要应用在哪些领域?
  9. Oracle创建函数
  10. matlab半波整流怎么做,基于Matlab的单相半波可控整流电路的设计与仿真.doc
  11. 宝塔linux怎么运行war,宝塔Linux面板在线解压WAR压缩文件
  12. 华为access、trunk、hybird接口从tag和untag进行了解。
  13. dlib实现人脸对齐方法
  14. 程序员离职原因的最佳回答_转行面试,高情商回答“你为什么要离职?”(建议收藏)...
  15. 数组的扁平化方法总结
  16. stratum协议原理
  17. 如何修清净心?(净空老法师法语)
  18. html和css怎么学好,如何学好css?
  19. 力扣第314周赛第三题
  20. [论文分享] Function Representations for Binary Similarity

热门文章

  1. 二叉树的应用:利用C语言编写简单的家谱管理系统
  2. D22 LeetCode 440.字典序的第K小数字(困难)
  3. C++ 使用folly的异步回调功能时出现的错误处理
  4. 小学信息科技编程题C语言,小学信息技术试题.doc
  5. 拓扑优化科研(持续更新帖)
  6. flutter中 实现类似Android OnResume功能
  7. CMOS 传感器是如何调整画面分辨率的?
  8. CentOS系统初装后的优化
  9. Docker推送进镜像到阿里云仓库
  10. ArcGIS基础(三):建筑可达性街道活力分析