问题 H: 【例9.24】滑雪

时间限制: 1 Sec  内存限制: 128 MB
提交: 21  解决: 13

题目描述

小明喜欢滑雪,因为滑雪的确很刺激,可是为了获得速度,滑的区域必须向下倾斜,当小明滑到坡底,不得不再次走上坡或等着直升机来载他,小明想知道在一个区域中最长的滑坡。滑坡的长度由滑过点的个数来计算,区域由一个二维数组给出,数组的每个数字代表点的高度。下面是一个例子:

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-24-17-16-1(从25开始到1结束),当然25-24……2-1更长,事实上这是最长的一条。

输入

输入的第一行为表示区域的二维数组的行数R和列数C(1≤R、C≤100),下面是R行,每行有C个数代表高度。

 

输出

输出区域中最长的滑坡长度。

 

样例输入

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

提示

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int h[][];
int a[][];
int dp[];
int di[][] = {,,-,,,,,-};
struct point{
int hi;
int x,y;
}p[];
bool cmp(point p1,point p2)
{
return p1.hi<p2.hi;
}
bool ok(int x1,int y1)
{
if(x1>=&&x1<=n&&y1>=&&y1<=m)
return true;
else
return false;
} int main()
{
cin>>n>>m;
int k=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
cin>>h[i][j];
p[k].hi=h[i][j];
p[k].x=i;
p[k].y=j;
dp[k]=;
a[i][j]=k++; }
}
sort(p+,p+n*m+,cmp);
int xx,yy;
int f=;
for(int i=;i<=n*m;i++)
{
if(i==)
f=;
for(int j=;j<;j++)
{
xx=p[i].x+di[j][];
yy=p[i].y+di[j][];
if(ok(xx,yy))
{
int bh=a[xx][yy];
int ybh=a[p[i].x][p[i].y];
if(h[xx][yy]<h[p[i].x][p[i].y])
{
dp[ybh]=max(dp[ybh],dp[bh]+);
}
}
}
}
int ma=;
for(int i=;i<=n*m;i++) ma=max(ma,dp[i]);
cout<<ma; return ;
}
 

[提交][状态][Edit] [TestData]

滑雪(dp)的更多相关文章

  1. Poj_1088_滑雪(DP)

    一.Description(poj1088) Michael喜欢滑雪百这并不奇怪,  因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载 ...

  2. POJ - 1088 滑雪 dp

    http://bailian.openjudge.cn/practice/1088?lang=en_US 题解: 设一个dp[N][N]数组代表从(i,j)坐标开始能滑到的最远距离.更新的方法为 遍历 ...

  3. poj 1088 滑雪 DP(dfs的记忆化搜索)

    题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...

  4. poj1088 滑雪 dp+dfs记忆化

    简单的搜索,不必多说了,初始状态下每个点能到达的长度是1,它本身.还有,注意关掉文件重定向,被坑好多次了. 代码如下: #include<cstdio> #include<algor ...

  5. 动态规划 DP

    10.1.5.253 1143 数字金字塔#include <iostream> #include<string.h> using namespace std; int a[1 ...

  6. 【USACO】滑雪课程

    滑雪课程贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 1 的渣渣.贝西从 0 时刻进入滑雪场,一到 T 时刻就必须离开.滑雪场里有 N 条斜坡,第 i 条斜坡滑行一次需要 Di 分钟,要求游 ...

  7. 各种背包的dp刷题板

    [p1332][NYOJ skiing] 滑雪  (dp+搜索) [p1312] [vjios1448 路灯改建计划] 关灯问题 (背包预处理的分组背包) f[i][j]表示给把前i个灯分为j组可以获 ...

  8. 滑雪(简单dp)

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 81099   Accepted: 30239 Description Mic ...

  9. POJ1088滑雪(dp+记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 86411   Accepted: 32318 Description ...

  10. POJ 1088 滑雪 记忆化DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K       Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...

随机推荐

  1. python的闭包与延时绑定问题

    起源于一道面试题... def mul(): return [lambda x : i*x for i in range(4)] print([m(2) for m in mul()]) # outp ...

  2. 微信支付---H5支付

    这里说的H5支付是指在微信外的浏览器打开H5商家的支付,切勿与公众号微信内支付混淆, 1.H5支付的开通流程 登陆微信商户平台页面:https://pay.weixin.qq.com/wiki/doc ...

  3. webstorm crack

    webstorm 2018.2注册码如下:{"licenseId":"ThisCrackLicenseId","licenseeName": ...

  4. 浅谈对象的两个方法:Object.keys() ,Object.assign();

    1 : Object.keys(obj) 返回给定对象的所有可枚举属性的字符串数组 例子1: var arr = [1, 2, 6, 20, 1]; console.log(Object.keys(a ...

  5. Java面试(一) -- 基础部分(1)

    1 .一个".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致.. ...

  6. Jsの练习-将 数组中值为0 的去掉,不为0的存入一个新的数组

    要求:将 数组中值为0 的去掉,不为0的存入一个新的数组 代码如下: <!DOCTYPE html> <html lang="en"> <head&g ...

  7. Building tools 为什么是主流?

    一.building tools 为什么主流? Gradle 是目前比较流行的构建工具之一,Android Studio 中集成的就是 Gradle,并针对 Android 应用开发了插件 Gradl ...

  8. 野(wild)指针与悬空(dangling)指针

    1. 什么是野指针(wild pointer)? A pointer in c which has not been initialized is known as wild pointer. 野指针 ...

  9. 带通滤波 matlab

    巴特沃斯:1.带阻滤波器设计带阻滤波器指标:阻带上边界频率:5Kz:阻带下边界频率:7Kz:通带上边界频率:2Kz:通带下边界频率:9Kz:通带最大衰减:1dB:阻带最小衰减:20dB:设计程序如下: ...

  10. Task使用

    Task task1 = Task.Factory.StartNew(() => { Console.WriteLine("Hello,task started by task fac ...