洛谷 P2658 汽车拉力比赛
题目传送门
解题思路:
二分答案,然后bfs验证,如果从一个路标可以达到其它所有路标,则答案可行.知道找到最佳答案.
AC代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue> using namespace std; int m,n,a[][],l,r,num,sum,ans,mid;
int dx[] = {-,,,},dy[] = {,,,-};
bool vis[][],v[][],flag,pp; inline bool check(int len,int x,int y) {
queue<int> q,q1;
q.push(x);
q1.push(y);
v[x][y] = ;
while(!q.empty()) {
x = q.front();
y = q1.front();
q.pop();
q1.pop();
if(vis[x][y] == ) num++;
if(num == sum) return true;
for(int i = ;i < ; i++) {
int xx = x + dx[i];
int yy = y + dy[i];
if(abs(a[xx][yy] - a[x][y]) > len) continue;
if(xx < || xx > m || yy < || yy > n) continue;
if(!v[xx][yy]) {
q.push(xx);
q1.push(yy);
v[xx][yy] = ;
}
}
}
return false;
} int main() {
int x,y;
scanf("%d%d",&m,&n);
for(int i = ;i <= m; i++)
for(int j = ;j <= n; j++){
scanf("%d",&a[i][j]);
r = max(r,a[i][j]);
}
for(int i = ;i <= m; i++)
for(int j = ;j <= n; j++) {
int u;
scanf("%d",&u);
if(u == )
vis[i][j] = ,sum++,x = i,y = j;
}
while(l < r) {
mid = (l + r) / ;
memset(v,,sizeof(v));
flag = false;
num = ;
if(check(mid,x,y))
r = mid,ans = mid;
else
l = mid + ;
}
printf("%d",ans);
return ;
}
洛谷 P2658 汽车拉力比赛的更多相关文章
- 洛谷——P2658 汽车拉力比赛
P2658 汽车拉力比赛 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些 ...
- 洛谷—— P2658 汽车拉力比赛
https://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ...
- P2658 汽车拉力比赛
题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者 ...
- scau 8616 汽车拉力比赛
上次我们过了二分图的最佳匹配,现在我们看一道题目,经典的二分图的最佳匹配题目 8616 汽车拉力比赛 时间限制:500MS 内存限制:1000K提交次数:71 通过次数:24 题型: 编 ...
- [洛谷P1707] 刷题比赛
洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...
- 洛谷P2831 愤怒的小鸟 + 篮球比赛1 2
这三道题一起做,有一点心得吧. 愤怒的小鸟,一眼看上去是爆搜,但是实现起来有困难(我打了0分出来). 还有一种解法是状压DP. 抛物线一共只有那么多条,我们枚举抛物线(枚举两个点),这样就能够预处理出 ...
- 洛谷 P4009 汽车加油行驶问题 解题报告
P4009 汽车加油行驶问题 题目描述 给定一个\(N×N\)的方形网格,设其左上角为起点◎,坐标(1,1) ,\(X\)轴向右为正,\(Y\)轴向下为正,每个方格边长为1 ,如图所示. 一辆汽车从起 ...
- 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】
题目描述 蒟蒻Edt把这个问题交给了你 ---- 一个精通数据结构的大犇,由于是第一题,这个题没那么难.. edt 现在对于题目进行了如下的简化: 最开始的数组每个元素都是0 给出nnn,optopt ...
- 洛谷P4009 汽车加油行驶问题
题目描述 给定一个 N \times NN×N 的方形网格,设其左上角为起点◎,坐标(1,1)(1,1),XX 轴向右为正, YY 轴向下为正,每个方格边长为 11 ,如图所示. 一辆汽车从起点◎出发 ...
随机推荐
- 用BusyBox制作Linux最小系统
1.下载busybox-1.30.1 地址:https://busybox.net/downloads/busybox-1.30.1.tar.bz2 2.解压:tar xvf busybox-1.30 ...
- R语言 scale()函数
1.scale() 函数 #Usage scale(x, center = TRUE, scale = TRUE) #center中心化,scale标准化 #Arguments x :a numeri ...
- PHP mb_substr mbstring 函数
定义和用法 mb_substr - 获取部分字符串 版本支持 PHP4 PHP5 PHP7 支持 支持 支持 5.4.8 length 传入 NULL,则从 start 提取到字符串的结尾处. 在之前 ...
- 最初步的.NET MvcApi + Vue 前后端分离IIS部署
一.完成项目,各个项目部署在IIS上 1.前端项目部署 完成项目后在控制台npm run build 生成了dist文件夹 主要是部署这个文件夹 打开IIS 和部署AspNet MVC项目一 ...
- UVA 1601 双向BFS
但是我们还不是很清楚每一次的状态怎么储存?我们可以用一个结构体,将每次的位置存起来,但是这个程序中用了一个更好的储存方法:我们知道最大的格数是16*16个,也就是256个,那么我们转换为二进制表示就是 ...
- 十五、React:简单点餐实例:知识点,html解析写法
一.功能 从首页列表点进去,转到详情页 列表.详情从Api获取 Api列表:http://a.itying.com/api/productlist 详情:http://a.itying.com/api ...
- Oracle 查询当前用户下的所有表
select table_name from user_tables;
- 二十二、SAP中创建一个内表,并添加内容循环输出显示
一.直接上代码 二.输出如下
- 2. FTP 服务器安装
vsftp 安装(linux) Linux : 安装,创建虚拟用户,配置,防火墙设置 1. 安装 执行yum -y install vsftpd 注意: (1) 是否使用sudo权限执行请根据您具体环 ...
- Maven的安装和创建项目的过程
一.下载Maven包和配置环境变量 1.将下载好的maven包放到一个目录中:目录中不能有汉字和空格 2.配置环境变量 3.配置path路径 二.配置阿里云私服 1.找到setting目录,配置下载j ...