洛谷 题解 P4955 【[USACO14JAN]Cross Country Skiing 越野滑雪】
二分+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 越野滑雪】相关推荐
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷题解——P2814 家谱
题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P2814. MYOJ,http://47.110.135.197/problem.php?id=5344. ...
- 【洛谷题解】P2433 【深基1-2】小学数学 N 合一
目录 [深基1-2]小学数学 N 合一 题解 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题目解析 问题 1~5 问题 6~10 问题 10~14 发牢骚 完整代码 谢谢 ...
- 洛谷题解——P1621 集合
题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...
- 洛谷题解——P1873:砍树
视频讲解可以直接点击这个 B 站链接,https://www.bilibili.com/video/BV1jk4y1k7hq/. 题目相关 题目链接 洛谷,https://www.luogu.com. ...
- 洛谷题解——P1024:一元三次方程求解
视频讲解可以直接点击这个 B 站链接,https://www.bilibili.com/video/BV1qT4y13717/. 题目相关 题目链接 洛谷,https://www.luogu.com. ...
- 题解系列009 | 洛谷题解 CF488A 【Giga Tower】
原题传送门:Giga Tower 一.题意 题目(传送门)给一个绝对值不超过十位的整数,想计算至多加几后会在和数中出现数字 888. 二.分析 看到这道题,我们最容易想到的当然是暴力枚举,但是首先需要 ...
- 【洛谷题解】P2356 弹珠游戏
本人第一篇题解 今天闲着没事,随机跳题,然后看到这题,觉得运气爆棚,计蒜客L2时空复杂度的课后原题,微改. 首先,这题我们可以知道枚举处理就行,注意点: 1.千万要分清每个数组的用途,不要写错!!本蒟 ...
- 洛谷题解 P1713 【麦当劳叔叔的难题】
这是一道很好的搜索题. 既然是最大时间与最小时间的差,所以可以先用BFS求出最少时间:再用DFS求出最大时间(但注意要剪枝,不然会超时). 话不多说,进入正题. 既然可以有四个方向可以走,那么我们可以 ...
最新文章
- 2020新款手机,吃鸡贼爽!包邮送一个!
- vs调用堆栈窗口怎么弄出来_从零开始(1)栈帧、调用约定
- [原创]直播服务器简单实现 http_flv和hls 内网直播桌面
- 2017年第八届蓝桥杯C/C++ A组国赛 —— 第一题:平方十位数
- java 发送 接受 xml请求
- linux 广播命令,Linux基础命令---ping
- 《Java并发编程的艺术》之synchronized的底层实现原理
- 一个技术预案,让老板当场喊出了“奥利给”
- 打拼10年的数据分析师,终于明白职场鄙视链才是最大的沉没黑洞
- [USACO19FEB]Cow Dating——找规律
- Unable to locate Spring NamespaceHandler for XML schema namespace
- 2021全国研究生数学建模竞赛E题思路
- python编程方式_python的两种编程方式是什么
- 建筑CAD基础设计【2】
- 拆解SSK SCRM330 USB3.0读卡器 GL3233 固件 0819
- 用JS实现猜数字游戏
- 弥散磁共振影像处理的黎曼 芬斯勒几何方法研究
- 达人评测:i5-1135g7相当于什么水平-i5-1135g7是低压吗
- 点击input文本框,文字消失 JS
- 论文写作 9: 引言需要讲述完整的故事