二分+DFS

看到这么多大佬写了并查集,BFS的,还没有人写DFS版的,那么肯定是要来水水积分的啦毕竟这可是道伪紫题呢!

做法楼上楼下也讲得很清楚了吧,详见代码的注释

#include<bits/stdc++.h>
using namespace std;
bool taofen_boys[510][510];//你可以理解为tf[][]
//是否需要走到 (不要打我
int Map[510][510];
//存每个点的高度
bool vis[510][510];//是否访问到
int n,m;
int sx,sy;
//起点
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
int mid;
vector<pair<int,int> >flag;
//用于存需要走到的点
inline int read()
{int tot=0;char c=getchar();while(c<'0'||c>'9')c=getchar();while(c>='0'&&c<='9'){tot=tot*10+c-'0';c=getchar();}return tot;
}
inline void DFS(int x,int y)
{//cout<<x<<" "<<y<<endl;for(int i=1;i<=4;i++)//四个方向枚举{int a=x+dx[i],b=y+dy[i];//cout<<a<<" "<<b<<endl;if(a<1||b<1||a>n||b>m||vis[a][b])continue;if(abs(Map[a][b]-Map[x][y])>mid)continue;//是否满足要求vis[a][b]=1;DFS(a,b);//这里不用回溯}
}
inline bool check()
{memset(vis,0,sizeof(vis));vis[sx][sy]=1;DFS(sx,sy);/*for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)cout<<vis[i][j]<<" ";cout<<endl;}*/for(int i=0;i<flag.size();i++){int tx=flag[i].first,ty=flag[i].second;if(!vis[tx][ty])return 0;//判断是否走过}return 1;
}
int main()
{n=read();m=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)Map[i][j]=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){taofen_boys[i][j]=read();if(taofen_boys[i][j]){sx=i,sy=j;//起点随便记录一个就行了flag.push_back(make_pair(i,j));}}/*mid=5000000;check();*/int l=0,r=1000000000,ans=0;while(l<=r)//二分答案{mid=l+r>>1;//cout<<l<<" "<<r<<" "<<mid<<" "<<ans<<" "<<check()<<endl;if(check())r=mid-1,ans=mid;else l=mid+1;}cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/hulean/p/10902642.html

洛谷 题解 P4955 【[USACO14JAN]Cross Country Skiing 越野滑雪】相关推荐

  1. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  2. 洛谷题解——P2814 家谱

    题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P2814. MYOJ,http://47.110.135.197/problem.php?id=5344. ...

  3. 【洛谷题解】P2433 【深基1-2】小学数学 N 合一

    目录 [深基1-2]小学数学 N 合一 题解 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题目解析 问题 1~5 问题 6~10 问题 10~14 发牢骚 完整代码 谢谢 ...

  4. 洛谷题解——P1621 集合

    题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...

  5. 洛谷题解——P1873:砍树

    视频讲解可以直接点击这个 B 站链接,https://www.bilibili.com/video/BV1jk4y1k7hq/. 题目相关 题目链接 洛谷,https://www.luogu.com. ...

  6. 洛谷题解——P1024:一元三次方程求解

    视频讲解可以直接点击这个 B 站链接,https://www.bilibili.com/video/BV1qT4y13717/. 题目相关 题目链接 洛谷,https://www.luogu.com. ...

  7. 题解系列009 | 洛谷题解 CF488A 【Giga Tower】

    原题传送门:Giga Tower 一.题意 题目(传送门)给一个绝对值不超过十位的整数,想计算至多加几后会在和数中出现数字 888. 二.分析 看到这道题,我们最容易想到的当然是暴力枚举,但是首先需要 ...

  8. 【洛谷题解】P2356 弹珠游戏

    本人第一篇题解 今天闲着没事,随机跳题,然后看到这题,觉得运气爆棚,计蒜客L2时空复杂度的课后原题,微改. 首先,这题我们可以知道枚举处理就行,注意点: 1.千万要分清每个数组的用途,不要写错!!本蒟 ...

  9. 洛谷题解 P1713 【麦当劳叔叔的难题】

    这是一道很好的搜索题. 既然是最大时间与最小时间的差,所以可以先用BFS求出最少时间:再用DFS求出最大时间(但注意要剪枝,不然会超时). 话不多说,进入正题. 既然可以有四个方向可以走,那么我们可以 ...

最新文章

  1. 2020新款手机,吃鸡贼爽!包邮送一个!
  2. vs调用堆栈窗口怎么弄出来_从零开始(1)栈帧、调用约定
  3. [原创]直播服务器简单实现 http_flv和hls 内网直播桌面
  4. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第一题:平方十位数
  5. java 发送 接受 xml请求
  6. linux 广播命令,Linux基础命令---ping
  7. 《Java并发编程的艺术》之synchronized的底层实现原理
  8. 一个技术预案,让老板当场喊出了“奥利给”
  9. 打拼10年的数据分析师,终于明白职场鄙视链才是最大的沉没黑洞
  10. [USACO19FEB]Cow Dating——找规律
  11. Unable to locate Spring NamespaceHandler for XML schema namespace
  12. 2021全国研究生数学建模竞赛E题思路
  13. python编程方式_python的两种编程方式是什么
  14. 建筑CAD基础设计【2】
  15. 拆解SSK SCRM330 USB3.0读卡器 GL3233 固件 0819
  16. 用JS实现猜数字游戏
  17. 弥散磁共振影像处理的黎曼 芬斯勒几何方法研究
  18. 达人评测:i5-1135g7相当于什么水平-i5-1135g7是低压吗
  19. 点击input文本框,文字消失 JS
  20. 论文写作 9: 引言需要讲述完整的故事

热门文章

  1. socket.io 中文手册 socket.io 中文文档
  2. 浏览器事件捕获冒泡以及阻止冒泡
  3. 《图解服务器网络架构》 学习笔记
  4. linux下仅仅有rman备份集的异机不同文件夹恢复
  5. 使用SVN钩子运行PHP更新服务器代码的注意事项
  6. font和lineheight冲突。
  7. SQL搜索转为XML搜索
  8. 带宽测量:pathload编译及运行
  9. awesome字体图标库
  10. 单片机中断机制对日常生活的启示_单片机原理部分课后习题解