洛谷 U86501 趣味擂台
洛谷 U86501 趣味擂台
题目背景
\(JDFZ\)\(2019\)秋季运动会开始辣!运动会中有一个叫做“趣味擂台”的游戏......
题目描述
游戏内容是这样的:擂台是一个\(N\times M\)的矩阵。由两支班级队伍参与游戏:攻擂方和守擂方。攻擂方由第一排的任意点出发,每次能向上下左右任一方向行进,经过擂台矩阵到达最后一排。而守擂方会在擂台矩阵除第一排和最后一排的任何一个点布置一个同学守擂,这个同学的强壮程度为\(P\)。分数核算方式是这样的:攻擂方通过擂台矩阵后,他付出的代价为他走过的路径中最强壮同学的强壮程度,而这个代价越小,证明攻擂方的选择越明智,自然得到的分数也最高。现在,强大的高一 · \(6\)班即将作为攻擂方参加比赛。\(6\)班知道守擂方的擂台布置情况(即每个点守擂同学的强壮程度)。作为一个强大的班级,\(6\)班当然想夺得魁首。所以他派出了班级中的\(OIer\)\(Seaway\)和\(iamrjj\)来解决这个问题,使得班级的得分最多。但他们俩太弱了,所以\(Seaway\)找到了你,请你编程解决这个问题。
输入格式
第一行有两个整数\(N,M\),表示擂台的大小。
接下来的\(N\)行,每行\(M\)个整数,第\(i\)行的第\(j\)个数表示这个位置的同学的强壮程度\(P[i] [j]\)。
输出格式
一个正整数,表示\(6\)班要付出的最小代价。
样例输入
4 4
0 0 0 0
1 2 3 4
4 3 2 1
0 0 0 0
样例输出
3
提示:
数据范围:
对于50%的数据,有\(1\le N,M\le 100\)。
对于全部的数据,有\(1\le N,M\le 2000\),\(P[i] [j]\le 1000\)。
题解:
二分答案+搜索。
二分表示的是这个最大代价的最小值。搜索是判断是否可行,最后的check环节是用flag变量完成的。
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,l,r,flag;
int map[1010][1010],v[1010][1010],vis[1010][1010];
int dx[10]={0,0,0,-1,1};
int dy[10]={0,1,-1,0,0};
void check(int x)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(map[i][j]<=x)
vis[i][j]=0;
else
vis[i][j]=1;
}
}
void dfs(int x,int y)
{
if(x==n)
{
flag=1;
return;
}
for(int i=1;i<=4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>0 && xx<=n && yy>0 && yy<=m)
{
if(v[xx][yy]==0 && vis[xx][yy]==0)
{
v[xx][yy]=1;
dfs(xx,yy);
if(flag==1)
break;
}
}
}
}
int main()
{
//freopen("6.in","r",stdin);
//freopen("6.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&map[i][j]);
r=max(r,map[i][j]);
}
while(l+1<r)
{
int mid=(l+r)>>1;
flag=0;
check(mid);
memset(v,0,sizeof v );
dfs(1,1);
if(flag==1)
r=mid;
else
l=mid;
}
printf("%d",r);
return 0;
}
洛谷 U86501 趣味擂台的更多相关文章
- 洛谷P1072 [NOIP2009] Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
- 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)
洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...
- 洛谷 U87052 一线天
洛谷 U87052 一线天 题目传送门 题目背景 \(JDFZ\)即将举办第一届"一线天"趣味运动会...... 题目描述 "一线天"运动会在\(JLU\)南岭 ...
- 【noip】跟着洛谷刷noip题
传送门 1.铺地毯 d1t1 模拟 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> # ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
随机推荐
- 小程序-tabBar简易版
<!-- 结构 --> <view class="wrapper"> <block wx:for="{{desc}}"> & ...
- CSP-J&S2019前颓废记
说了是颓废记,就是颓废记,因为真的很颓废...... 2018年12月 我看懂了<啊哈算法>(仅仅是看懂,并没有完全学会,只看得懂,却不会敲) 插曲:八上期末考试 我们老师阻挠我继续学OI ...
- C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档
Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...
- TCP的三次握手与四次挥手理解
本文经过借鉴书籍资料.他人博客总结出的知识点,欢迎提问 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后 ...
- golang实战--家庭收支记账软件(面向过程)
1.开发流程 2.目标 模拟实现一个基于文本界面的(家庭记账软件) : 初步掌握编程技巧和调试技巧: 主要包含以下知识点:局部变量和基本数据类型.循环语句.分支语句.简单屏幕格式输出.面向对象编程: ...
- npm install说明
一.常用简写 npm install=npm i.在git clone项目的时候,项目文件中并没有 node_modules文件夹,项目的依赖文件可能很大.直接执行,npm会根据package.jso ...
- es6的map()方法解释
es6的map()方法解释 map方法的作用不难理解,即“映射”,也就是原数组被“映射”成对应新数组.下面这个例子是数值项求平方: var data = [1, 2, 3, 4]; var arr ...
- 微信小程序:使用wx.request()请求后台接收不到参数
问题描述: 微信小程序:wx.request()请求后台接收不到参数,我通过wx.request()使用POST方式调用请求,参数传递不到后台 解决方案: Content-Type': 'applic ...
- 架构设计系列-前端模式的后端(BFF)翻译PhilCalçado
本文翻译自PhilCalçado的官网:https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html 对 ...
- springboot学习源码
springbootTest 学习源码链接 启动前,需要创建数据库表,修改自己的链接配置 create database test01; use test01; CREATE TABLE catego ...