刺激(codevs 1958)
题目描述 Description
saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉。现在S拿到了一张地图,试图制定一个最长路径。然而有的地图过于庞大,不易直接看出,所以S请来了saffah,saffah又请来了你向其帮忙。
地图可抽象为一个M×N的矩阵,规定上北下南,左西右东。矩阵中的元素代表这个点的高度。由于S有特殊情况,出于对S的安全考虑,S只能向东滑,向南滑,或者就地停下。我们假定摩擦力可以忽略,那么S的机械能守恒,即S不可能到达比出发点高的地方。
S可以从任意一点出发,到任意一点停止,除了遵守上述规则外,S还要求自己的路线必须是“一上一下一上一下”(这样才刺激对吧),即如果这一时刻比上一时刻的高度高,那么下一时刻只能滑到比这一时刻低的地方,或者停止;反之亦然。保证不会有相邻的两个高度相同的地方。
现在S想知道,按照这个要求,最多能够经过几个点。(包括起点和终点)
输入描述 Input Description
输入文件的第一行有两个正整数M,N。
接下来有M行,每行有N个整数,表示这一点的高度值Hi,j。
输出描述 Output Description
输出文件只有一行,为一个整数,为最大能够滑行经过的点数。
样例输入 Sample Input
4 5
3 8 9 2 -1
2 5 8 0 8
8 0 1 2 3
-2 1 9 -1 0
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
说明: 满足题意的最长路径为8→5→8→0(或1),共经过了7个点。可以证明,没有更长的路径存在。
对于100%的数据,-2×109≤Hi,j≤2×109。
对于30%的数据,M=N≤5;对于50%的数据,M+N≤25;对于70%的数据,M+N≤50;对于100%的数据,M+N≤100。
分析:非常暴力的搜索,竟然只用了2ms
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 110
using namespace std;
int map[M][M],n,m,ans;
bool vis[M][M];
int ax[]={,};
int ay[]={,};
void dfs(int x,int y,int t,int f,int limit)
{
ans=max(ans,t);
for(int i=;i<;i++)
{
int xx=x+ax[i],yy=y+ay[i];
if(xx>=&&xx<=n&&yy>=&&yy<=m&&!vis[xx][yy]&&map[xx][yy]<=limit)
if((f==&&map[xx][yy]>map[x][y])||(f==-&&map[xx][yy]<map[x][y]))
{
vis[xx][yy]=true;
dfs(xx,yy,t+,-f,limit);
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&map[i][j]);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
memset(vis,,sizeof(vis));
vis[i][j]=true;
dfs(i,j,,-,map[i][j]);
}
printf("%d",ans);
return ;
}
刺激(codevs 1958)的更多相关文章
- AC日记——刺激 codevs 1958
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激 ...
- Codevs 1958 刺激
1958 刺激 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement, ...
- codevs——1958 刺激
1958 刺激 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺 ...
- codevs1958 刺激
难度等级:黄金 1958 刺激 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉.现在S拿到 ...
- codevs http://www.codevs.cn/problem/?problemset_id=1 循环、递归、stl复习题
12.10高一练习题 1.要求: 这周回顾复习的内容是循环.递归.stl. 不要因为题目简单就放弃不做,现在就是练习基础. 2.练习题: (1)循环 题目解析与代码见随笔分类 NOI题库 htt ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
随机推荐
- .net主站和二级域名下实现session共享
public class CrossDomainCookie : IHttpModule { private string m_RootDomain = string.Empty; #region I ...
- C#过时方法标记
1.当遇到过时或废弃的方式 函数怎么办 [Obsolete]特性解决你的困惑 1.1:当方法已经完成相关兼容 可以保留时
- Swiper插件轮播
<html><head> <meta charset="utf-8"> <title>Swiper轮播</title>& ...
- 架构师细说 NGINX 的配置及优化
最近感觉很多东西在运用到一定的程度之后,会发现原来是自己了解到的不够.一方面限于实际运用到的不多,一方面可能是因为一开始没有进行全面认识.遂这里搜集整理了一番NGINX. 一.nginx启动和关闭 c ...
- H.264学习笔记1——相关概念
此处记录学习AVC过程中的一些基本概念,不定时更新. frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵. field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶 ...
- webpack3.0版本的一些改动
npm install --save / npm install -S 项目发布上线之后还会依赖用到的插件,没有这些插件,项目不能运行 npm install --save-dev / npm ins ...
- win+r 快速命令
control keymgr.dll 打开凭据管理器 secpol.msc 本地安全策略 mstsc 远程 msconfig 启动选项 %temp% 临时文件夹 \\192.168 ...
- CentOS 6.4 linux下编译安装MySQL5.6.14
CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...
- leetcode_919. Complete Binary Tree Inserter
https://leetcode.com/problems/complete-binary-tree-inserter/ 设计一个CBTInserter,使用给定完全二叉树初始化.三个功能; CBTI ...
- XML和JSON
XML XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用: 数据交互 配置应用程序和网站 ...