Description

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
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
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。


Input

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

Output

输出最长区域的长度。


Sample Input

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

Sample Output

25


解题思路

把二维化成一维,把每个坐标的点记录下来,然后按照高度排序,然后循环,取该点可以滑到的点的最大值然后加1(自己该格)。
动态转移方程:f[i]=max{f[i],f[j]+1}


代码

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct jlw{int wx,wy,high;
};//结构体
jlw a[100001];
int x,y,n,m,num,maxs,w,f[100001];
bool cmp(jlw x,jlw y)//比较器
{return x.high<y.high;
}
bool check(jlw x,jlw y)//判断该点可否到达
{if (abs(x.wx-y.wx)+abs(x.wy-y.wy)==1 && x.high>y.high) return true;else return false;
}
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++) {scanf("%d",&num);w++;a[w].wx=i;a[w].wy=j;a[w].high=num;//记录高度和位置}sort(a+1,a+w+1,cmp);//C++自带快排,用比较器做到搜索关键字for (int i=1;i<=w;i++){for (int j=1;j<i;j++){if (check(a[i],a[j]))f[i]=max(f[i],f[j]);//求可以到达的点的最大值。}f[i]++;//加上自己的maxs=max(f[i],maxs);//取最大值}printf("%d",maxs);//输出
}

洛谷P1434-滑雪【线性化Dp】相关推荐

  1. 洛谷 p1434 滑雪【记忆化搜索】

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

  2. 洛谷P1434滑雪(逆向图的遍历搜索递归+记忆化,最长路问题)

    题目链接:https://www.luogu.org/problemnew/show/P1434 刚开始最先想到的就是正向递归遍历,遍历所有情况方法,记录找到最长的,正向递归遍历也不难写,但会超时. ...

  3. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  4. 洛谷 P1434 [SHOI2002] 滑雪(优先队列+dp / 记忆化搜索)

    P1434 [SHOI2002] 滑雪https://www.luogu.com.cn/problem/solution/P1434 优先队列+dp 本题状态转移方程一目了然 为了保证状态间无后效性, ...

  5. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

    cf传送门 P3643 [APIO2016]划艇 文章目录 题意: 思路: 题意: aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数,求aaa数组不增的概率. 思 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...

  7. 洛谷P1244 青蛙过河 DP/思路

    又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...

  8. 洛谷 P2657 (数位DP)

    ### 洛谷 P2657 题目链接 ### 题目大意:给你一个数的范围 [A,B] ,问你这段区间内,有几个数满足如下条件: 1.两个相邻数位上的数的差值至少为 2 . 2.不包含前导零. 很简单的数 ...

  9. 洛谷 Golden Sword(dp,优先队列优化【含板子】)|| 补充练习:洛谷 跳房子

    题目链接: 「SWTR-03」Golden Sword - 洛谷 思路: 设表示放第i个原料,锅里共有 j 个时的耐久度之和. 容易知道dp方程为,其中 这样就可以写出暴力dp的代码如下:(需要枚举i ...

  10. 洛谷 P1434 [SHOI2002]滑雪(DP,记忆化搜索)

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

最新文章

  1. 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...
  2. Matlab 区域扫描,30+行Matlab代码实现文件扫描
  3. 【深度学习】基于深度神经网络进行权重剪枝的算法(二)
  4. SpringAop对struts2的Action设置切面织入时报错java.lang.NoSuchMethodException
  5. Linux fwrite 什么时候刷新,linux的fwrite()使用方法,当前时间写入文本的程序
  6. HDU 2255 - 奔小康赚大钱
  7. pip install transformers
  8. mtk android 串口日志重定向,MTK UART串口调试
  9. c++ string常用函数
  10. excel条件格式标记一整行
  11. amoeba mysql mmm_MMM+Amoeba搭建MySQL高可用负载均衡群集
  12. 清理win7系统盘空间
  13. Java数组初始化, 冒泡排序, 查找
  14. 整理软件行业职位介绍(PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等)、组织结构、职责
  15. 华为云对象存储服务OBS,海量存储安全可靠,让云存储更加简单
  16. 失物招领小程序,失物招领微信小程序,校园失物招领小程序系统毕设作品
  17. geoCoordMap数据,全国省市,4个直辖市,用于echart gl 3d地图
  18. 唐纳德与子串 Hard
  19. 浏览器F12控制台简述Network
  20. 轻松实现手机微信查看PLC数据,推送PLC故障

热门文章

  1. 神州云科DCN存储管理IP_干货!DCN校园网大二层解决方案详解
  2. android view存储为jpg,Android长按imageview把图片保存到本地的实例代码
  3. 武汉大学计算机学院2019考研复试,2019年武汉大学硕士研究生复试及录取名单汇总...
  4. zipsys驱动签名工具_全球首发 300系列主板USB WIN7 64位驱动 SMXDIY
  5. mysql 错误 0152_SP2-1503 SP2-0152 错误解决
  6. 39. 组合总和020(思路+详解)
  7. [Java基础]抽象类和接口的区别
  8. LeetCode 112路径总和-简单
  9. 高等数学上-赵立军-北京大学出版社-题解-练习5.6
  10. java arraylist 源代码_java中ArrayList的源代码是什么