题目描述 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[2]={0,1};
int ay[2]={1,0};
void dfs(int x,int y,int t,int f,int limit)
{ans=max(ans,t);for(int i=0;i<2;i++){int xx=x+ax[i],yy=y+ay[i];if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]&&map[xx][yy]<=limit)if((f==1&&map[xx][yy]>map[x][y])||(f==-1&&map[xx][yy]<map[x][y])){vis[xx][yy]=true;dfs(xx,yy,t+1,-f,limit);}}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&map[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){memset(vis,0,sizeof(vis));vis[i][j]=true;dfs(i,j,1,-1,map[i][j]);}printf("%d",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/harden/p/5785475.html

刺激(codevs 1958)相关推荐

  1. codevs——1958 刺激

    1958 刺激  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exit ...

  2. codevs 1958 刺激

    /* 这题并不难 思路很简单 但是 如果记忆化的话 是会跪掉的 我们可能想到用01维护下次往上还是往下 但是我们忽略了 "每个的高度不得高于起点高度" 可能之前记忆化记下的与现在用 ...

  3. [ CodeVS冲杯之路 ] P1116

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1116/ 数据很小,DFS可A,每层枚举颜色,判断相邻的点是否有重复的颜色,记得回溯时把颜色染回0,即无颜色 这里我使用 ...

  4. 【贪心】【codevs】1214 线段覆盖

    http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...

  5. [codevs 1913] 数字梯形问题

    [codevs 1913] 数字梯形问题 题解: 本题就是加强版的 [codevs 1033] 蚯蚓的游戏问题. 分别针对三个规则建图.运行最小费用最大流. 规则1:从梯形的顶至底的m条路径互不相交. ...

  6. 声波刺激就可长出新骨头?每天只需10分钟,干细胞5天快速分化,芯片装置只需1美元...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 骨骼再生一直是 ...

  7. 今天是我“略懂”Python的第200天,我遇到了新刺激……

    大家好,我是一名曾经只会excel的数据分析师. 后来经我的同事大鹏点拨,我知道了Python数据分析,向他学习进入了一条通神之路.今天是我"略懂"Python数据分析的第200天 ...

  8. 自定义服务器怎么调98k,《刺激战场》如何开自定义房间?升级可领房卡,3倍物资98k随便捡...

    原标题:<刺激战场>如何开自定义房间?升级可领房卡,3倍物资98k随便捡 大家好,我是游戏揽件君.相信很多刺激战场玩家都有过这样一个困惑,其他人到底是怎么开自定义房间的?为何我想跟朋友开1 ...

  9. codevs 1002 搭桥

    codevs 第一道题 先贴描述 1002 搭桥  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Description 有一矩 ...

最新文章

  1. 【python】图像映射:单应性变换与图像扭曲
  2. 上拉电阻与下拉电阻的作用
  3. 进一步认识golang中的并发
  4. 纯javascript 幻灯片
  5. 工程化专题之Maven(下)
  6. 关于浏览器对静态HTML页面的缓存问题
  7. 串口开发,数据类型转换——字符串转 byte[],byte[]转二进制,二进制转十进制转byte[],byte[]转十进制,byte[]拼接,校验
  8. 推出超低功耗数字式热释电传感器,翠展微电子厉害了……
  9. Python Pycharm Anacanda 区别
  10. 一个轻量级分布式RPC框架--NettyRpc
  11. c 调用matlab.m文件,ubuntu系统下C++调用matlab程序的方法详解
  12. 三菱基于雷诺平台推全新跑车 搭1.1T引擎
  13. php 上传 excel xlsx_在PHP中创建和编辑Excel电子表格
  14. 第10章 随机山水画(《Python趣味创意编程》教学视频)
  15. 斯坦福教授ICLR演讲:图网络最新进展GraphRNN和GCPN(附PPT下载)
  16. 大数据:海量数据的存储方案及其对应的高并发解决方案
  17. 史上最全Java基础视频教程
  18. 云计算平台是什么意思?可以划分为哪三类?
  19. 记一次js调试(attachEvent, onchange, onpropertychange)
  20. android解压zap空间耗费,安卓zap抹机模块

热门文章

  1. 【Android开发】图形图像处理技术-绘制几何图形
  2. Nagios安装与配置
  3. day1 工资条的制作
  4. 程序员们请收好这本JVM日历:Java 2018大事回顾
  5. 【spring boot2】第2篇:配置文件YAML语法
  6. 企业如何确保精益生产管理真正落地?
  7. 测试网站访问速度的5个方法
  8. js调试工具console详解
  9. Response.Write详细介绍
  10. DIV+CSS如何设置字体间距