洛谷 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分 数组大小一定要开够 ...
随机推荐
- Docker 简单发布dotnet core项目 图文版
原文:https://www.cnblogs.com/chuankang/p/9474591.html docker发布dotnet core简单流程 需要结合这个版本看哈 地址:https://ww ...
- Java 虚拟机编程接口JVMIT
JVMTI(JVM Tool Interface)是 Java 虚拟机所提供的 native 编程接口,是 JVMPI(Java Virtual Machine Profiler Interface) ...
- matlab练习程序(DBSCAN)
DBSCAN全称Density-Based Spatial Clustering of Applications with Noise,是一种密度聚类算法. 和Kmeans相比,不需要事先知道数据的类 ...
- 从零实现一个React:Luster(一):JSX解析器
前言 这是之前在掘金发的两条沸点,懒得写了,直接复制过来作为前言了.然后这个项目可能之后还会继续写,增加一些路由或者模板引擎的指令什么的,但是再过没多久寒假就有大块时间了就可能不摸这个鱼去开其它坑了, ...
- 解决office365无法登录以及同步的问题
解决office365无法登录以及同步的问题 You better need to test them one by one. You better need to test them one by ...
- Java连载7-变量&数据类型
一.变量 1.注意点: 在同一个“作用域”中,变量名不能重名,但是变量可以重新赋值. 2.什么是作用域? 答:描述的是变量的有效范围,在范围之内是可以被访问的,只要出了作用域就无法访问(也就是在大括号 ...
- 【转】win7旗舰版英文版下载(64位|32位)|Windows7英文版ISO镜像
Win7旗舰版SP1 64位ISO镜像下载地址:文件名:en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.isoSHA1:A491F985DCCFB5 ...
- LeetCode 841:钥匙和房间 Keys and Rooms
题目: 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间. 在形式上,对于每个房间 i 都有一个钥匙列表 ...
- LeetCode 203:移除链表元素 Remove LinkedList Elements
删除链表中等于给定值 val 的所有节点. Remove all elements from a linked list of integers that have value val. 示例: 输入 ...
- 第二节: Redis之Set类型和SortedSet类型的介绍和案例应用
一. Set类型基础 1. 类型说明 1个key→多个value,value的值不重复! Set一种无序且元素内容不重复的集合,不用做重复性判断了,和我们数学中的集合概念相同,可以对多个集合求交集.并 ...