洛谷 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分 数组大小一定要开够 ...
随机推荐
- 使用threaddump-analyzer 快速查看jvm thread 状态信息
日常开发中,我们可以需要通过thread dump 查看线程信息,比如锁,spotify 团队提供了一个web 界面,很方便 以下是简单使用,同时添加了docker 支持 添加docker 支持 cl ...
- javaagent的实现
实现javaagent功能的是一个叫做instrument的JVMTIAgent(linux下对应的动态库是libinstrument.so),另外instrument agent还有个别名叫JPLI ...
- Asp.Net Core 工作单元 UnitOfWork UOW
Asp.Net Core 工作单元示例 来自 ABP UOW 去除所有无用特性 代码下载 : 去除所有无用特性版本,原生AspNetCore实现 差不多 2278 行代码: 链接:https://pa ...
- 【Java语言特性学习之三】Java4种对象引用
为了更灵活的控制对象的生命周期,在JDK1.2之后,引用被划分为(引用的级别和强度由高到低)强引用.软引用.弱引用.虚引用四种类型,每种类型有不同的生命周期,它们不同的地方就在于垃圾回收器对待它们会使 ...
- CodeForce 176C Playing with Superglue
Two players play a game. The game is played on a rectangular board with n × m squares. At the beginn ...
- Expression表达式目录树动态拼接 反射获取泛型方法
class TestOne { public String[] arr = { "1", "2", "3" }; public class ...
- js 设计模式——代理模式
代理模式 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问. 生活中有很多的代理模式的场景.例如,明星有经纪人作为代理,老板有秘书作为代理等等,当有事情的时候,会找到经纪人或秘书,再由他 ...
- 使用Javamail实现邮件发送功能
目录 相关的包 编写工具类 环境说明 @(使用Javamail实现邮件发送功能) 相关的包 activation.jar javax.mail.jar mail包建议使用高版本写的包,否则可能会发空白 ...
- elasticsearch 入门篇
前言: 要论入门最好的文档,非elasticsearch权威指南和官方的开发文档莫属,我只是基于这两份文档,记录一些关键知识点和自己的理解. 我们为什么要用elasticsearch,或者说来解决什么 ...
- 你所不知的 PHP 断言(assert)
PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao). 本文基于 PHP Version ...