描述

trs喜欢滑雪。他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。
    例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一。例如24-17-16-1,其实25-24-23…3-2-1更长,事实上这是最长的一条。

输入格式

输入文件

第1行: 两个数字r,c(1<=r,c<=100),表示矩阵的行列。
第2..r+1行:每行c个数,表示这个矩阵。

输出格式

输出文件

仅一行: 输出1个整数,表示可以滑行的最大长度。

测试样例1

输入

5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

输出

25

根据题意可以轻易想出搜索。但是没有优化的搜索时间复杂度高达指数级,显然不可取。这里使用动态规划的方法。

首先假设题目是一维的,那么问题就很简单了——最长连续下降子序列,可以在O(n^2)的时间内解决,对于题目的数据范围已经可以接受了。现在只是增加了一个维度,题目本质并没有什么变化。

首先进行降维处理——将二维矩阵变位一维数组,当然需要记录每个点的坐标。然后按高度从小到大进行排序,然后求最长严格上升子序列(反过来从大到小排序,求严格下降子序列也可以)。如何求最长上升子序列不详细说明。当然,这样得到的答案只是最长,但是放到原来的数据中他们不一定是连续的,所以只需要在判断过程中加一个限制条件——两点挨着就可以。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#define max(a,b) ((a>b)? a:b)
using namespace std;
long n,m;
struct shuxing
{long x,y;long h;} s[10010];
long f[10010];bool cmp(shuxing a,shuxing b)
{return a.h<b.h;}bool xianglin(long a,long b)
{if(abs(s[a].x-s[b].x)==1 && s[a].y==s[b].y) return true;if(abs(s[a].y-s[b].y)==1 && s[a].x==s[b].x) return true;return false;}int main()
{cin>>n>>m;long a=0;for(long i=1;i<=n;i++)for(long j=1;j<=m;j++){s[++a].x=i;s[a].y=j;cin>>s[a].h;}sort(s+1,s+1+a,cmp);//for(long i=1;i<=a;)/*DP*/for(long i=1;i<=a;i++) f[i]=1;for(long i=a-1;i>0;i--)  {for(long j=i+1;j<=a;j++)  {if((s[j].h>s[i].h)&&(f[i]<f[j]+1)&&xianglin(i,j)) f[i]=f[j]+1;}}/*DPend*/long ff=0;for(long i=1;i<=a;i++) ff=max(ff,f[i]);cout<<ff<<endl;return 0;}

tyvj p1004 滑雪相关推荐

  1. |Tyvj|动态规划|P1004 滑雪

    http://tyvj.cn/p/1004 由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索. #include<cstdio> #include<cstring> ...

  2. Tyvj 1004 滑雪~

    Tyvj 1004 问题描述: 输入一个 r*c 的矩阵,并且矩阵中的每个元素都是     正整数,从其中某个大的元素出发,向4个方向(上下左右)     递归,直到划出一条能够通过较多数字的线,并且 ...

  3. P1004 滑雪(DFS)

    描述 trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜.     例如样例中的那个矩形,可以从某个点滑 ...

  4. 2022-2028年中国滑雪产业投资分析及前景预测报告(全卷)

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了滑雪行业相关概述.中国滑雪行业运行环境.分析了中国滑雪行业的现状.中 ...

  5. COJN 0575 800601滑雪

    800601滑雪 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是 ...

  6. 基于PyGame的乒乓球和滑雪小游戏

    基于PyGame的乒乓球和滑雪游戏 昝道广 概述 前言 乒乓球游戏规则 乒乓球游戏图形界面 乒乓球游戏部分代码 滑雪小游戏图形界面 滑雪小游戏规则 滑雪小游戏部分代码 技术分析 后记 前言 首先阿广确 ...

  7. [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)

    P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...

  8. 洛谷 P2573 [SCOI2012]滑雪

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1<=i<=N)和一高度Hi.a180285 ...

  9. TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘

    描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...

最新文章

  1. @autowired注解_SpringBoot常用注解大全
  2. JVM运行时对它所管理的内存划分区域(为面试准备)
  3. 到底要不要考研?读完研究生就能找到好工作了吗?
  4. 对话阿里敏捷教练 | 成功辅导过淘宝、闲鱼,他都是如何帮助团队
  5. 数据的插入、更新、删除
  6. SharePoint2013升级SP1后,运行配置向导报错:未注册sharepoint服务
  7. Flink CDC 实时同步mysql
  8. Linux文件权限管理 chmod 读、写、可执行
  9. 【前端】【element】el-progress组件使用文档补充——大小调整与数字颜色
  10. linux常用软件推荐
  11. Qt在VS2012中引用QtWidgets时报GLES2/gl2.h无法打开错误的解决办法
  12. 各大Asp木马的万能密码
  13. 从零开始学USB(三、基础知识3)
  14. WinRAR 5.60 官方简体中文无广告弹窗版本
  15. 第10章 十字消除(《C和C++游戏趣味编程》配套教学视频)
  16. Windows10安装apt-cyg教程
  17. element-ui+vue,翻页添加首页、尾页跳转按钮
  18. web前端开发前景怎么样?2023年就业薪资能有多少?
  19. Android实现登录邮箱的自动补全功能
  20. 骨传导耳机排名前十名,列举排行靠前的几款骨感耳机

热门文章

  1. RDP远程登录 Windows server系统
  2. Sublime Text3批量更改文件内容
  3. 《蜘蛛侠:平行宇宙》的视觉解析与滤镜实现
  4. java语言的编译器_JAVA语言编译器是一个CASE工具。()。
  5. Cordova是什么
  6. 解决浏览器兼容新问题
  7. 为什么HashMap链表长度超过8会转成树结构
  8. (VKL系列)超低功耗LCD液晶显示驱动IC-VKL076 SSOP28,19*4 76点阵,超低工作电流约7.5微安,适用水电表/温湿度计/温控器/传感器等,FAE技术支持
  9. 《java编程思想》读书笔记【前言】
  10. HSV与RGB之间相互转换