难度等级:黄金

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

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,ans;
int a[100][100];
void dfs(int x,int y,int s,int p,int b)//s代表当前走了几个点;p=1则这一步要往高处走,p=-1则这一步要往低处走;b为起点高度
{ans=max(s,ans);if(s+n-x+m-y<=ans) return;//最优性剪枝:如果从这一个点开始忽略高度可以走到的点的总数比当前ans小,那么以这个点为起点一定不是答案 if(x<n&&y<=m&&a[x+1][y]<=b&&a[x+1][y]>a[x][y]&&p==1)//往更高的南边走 dfs(x+1,y,s+1,-1,b);//-1:下一步要往低处走 else if(x<n&&y<=m&&a[x+1][y]<=b&&a[x+1][y]<a[x][y]&&p==-1)//往更低的南边走 dfs(x+1,y,s+1,1,b);//1:下一步要往高处走 if(x<=n&&y<m&&a[x][y+1]<=b&&a[x][y+1]>a[x][y]&&p==1)//往更高的东边走 dfs(x,y+1,s+1,-1,b);else if(x<=n&&y<m&&a[x][y+1]<=b&&a[x][y+1]<a[x][y]&&p==-1)//往更低的东边走 dfs(x,y+1,s+1,1,b);
}
int init()//读入优化
{int x=0,f=1;char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}return x*f;
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=init();//读入优化,也可以直接cin>>a[i][j] for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)dfs(i,j,1,-1,a[i][j]);cout<<ans;
}

开始的错误代码:

if(x<n&&y<=m&&a[x+1][y]<=b&&(a[x+1][y]-a[x][y])*p>0)dfs(x+1,y,s+1,1,b);
if(x<=n&&y<m&&a[x][y+1]<=b&&(a[x][y+1]-a[x][y])*p>0)dfs(x,y+1,s+1,-1,b);借助同号得正可以确定下一步要往高处还是低处走,但不能确定上一步的情况

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6159923.html

codevs1958 刺激相关推荐

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

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

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

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

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

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

  4. codevs——1958 刺激

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

  5. a onclick 未响应_深大李冰石教授、港科大唐本忠院士:在多重刺激响应性材料领域取得最新进展...

    刺激响应荧光分子是一类重要的可用于光学传感器制备的功能材料.目前已经报道的刺激响应荧光分子普遍具有单一响应的特点,难以满足多元化的应用需求,而多重刺激响应荧光分子的设计具有很大挑战.最近,深圳大学李冰 ...

  6. 使用大脑活动反馈的刺激技术自动化治疗脑部疾病

    Graphical abstract. Credit: DOI: 10.1016/j.brs.2022.01.016 多年来,医疗从业人员一直使用经颅磁脑刺激(TMS)来治疗慢性疼痛和抑郁症等脑部疾病 ...

  7. “万能钥匙”可以打开大脑:脑刺激个性化医疗的新领域

    下丘脑由形态及功能各异的多种神经细胞亚型聚集而成,具有高度异质性,对机体的生 据调查,当前许多传统方法对数百万患有神经疾病和精神疾病(例如抑郁症,成瘾症和慢性疼痛)的患者来说治疗效果并不好,或者说,许 ...

  8. CMU研究人员提出一种新的深部脑刺激方法,可延长帕金森病治疗效果

    目前用于临床环境例如治疗帕金森氏症的深部脑刺激并不能区分不同的神经回路.因此,针对特定神经元群的选择性刺激可以取得相当大的改善.Spix等人利用光遗传学开发了一种巧妙的电刺激方案,可增强细胞类型的特异 ...

  9. Cell:视觉错觉运动刺激的探索:基于EEG的实用辅助系统的脑机接口

    本文提出了一种基于视觉错觉运动刺激(illusory visual motion stimuli)的脑机接口(BCI),旨在使用提出的系统来增强运动想象(MI)的范式.由于运动想象需要较长时间的训练, ...

  10. “万能钥匙”可以释放大脑:脑刺激个性化医疗的新领域

    据调查,当前许多传统方法对数百万患有神经疾病和精神疾病(例如抑郁症,成瘾症和慢性疼痛)的患者来说治疗效果并不好,或者说,许多传统的治疗方法很难治愈他们.实际上,大约30%的中毒抑郁症患者对任何药物或心 ...

最新文章

  1. linux查看mq死信队列,linux下postgresql 一主多从、redis集群、rabbitmq等环境搭建 (九) xa-rdmp-archiving 从数据库的安装...
  2. 微信小程序 wxml 中使用 js函数
  3. 从零开始的AI·决策树原来这么好理解(附实例代码)
  4. 忘记Oracle的sys,system的密码(已成功解决)
  5. 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解
  6. 数据层HikariCP与MyBatis整合
  7. TIMING_02 浅谈时序约束与时序分析
  8. 360浏览器设置多标签操作步骤
  9. 小米路由器爆款产品遭遇友商恶意抹黑 官方怒晒黑稿...
  10. mysql数据类型及占用字节数
  11. 全协议NFC读写模块 小尺寸 功能强 TTL电平输出 可兼容14443A模块 14443B模块 Felica模块 15693模块 CLRC663读写模块
  12. 腾讯云 obs 推流一直断开连接无法进行直播
  13. 2022全国智慧医院建设大会
  14. 思念绵绵,爱在彼此心间漫延
  15. 物联网安全攻防的“线上幽灵”
  16. css hr标签 各种样式
  17. 为什么手机有卡却突然显示无服务器,手机突然显示“无服务”,原因是什么?...
  18. DTOJ 4015: 永琳的竹林迷径
  19. 计算机CPU工作(多核/缓存)原理
  20. 人脸识别论文整理——深度人脸识别的大边缘余弦损失

热门文章

  1. 名词解释:什么是RSS? [转贴]
  2. 从零基础入门Tensorflow2.0 ----七、37. 文本生成之---3. 采样文本生成
  3. matplotlib.pyplot库解析
  4. python in visual studio
  5. envi 面向对象遥感图像分类
  6. 运输层详解(二)(TCP)
  7. Python爬虫基础-01-带有请求参数的爬虫
  8. Flink Forward Asia 2020,明天见!
  9. 回顾 | Apache Flink Meetup · 深圳站精彩回顾(附PPT下载)
  10. 解方程c语言程序,C语言程序解线性方程组