Code[VS] 2152 滑雪题解
Code[VS] 2152 滑雪题解
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个整数,表示可以滑行的最大长度。
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
1s
————————————————————————————分割线————————————————————————————
//Code By DrSHHHS #include "bits/stdc++.h" using namespace std ; const int maxN = ;
const int INF = ; struct Slide {int x , y , val ;}; Slide arr[maxN] ;
int f[maxN] ; bool cmp ( Slide a , Slide b ) { return a.val > b.val ;}
int Abs ( int x ) { return x>?x:-x ;}
int Max ( int a , int b ){ return a>b?a:b ; } bool Judge ( int p1 , int p2 ) {//判断两座山是否相邻且严格下降
if (( Abs ( arr[p1].x - arr[p2].x) + Abs ( arr[p1].y - arr[p2].y) )== && arr[p2].val > arr[p1].val) return true ;
else return false ;
} int main ( ) {
int N , M , tmp , K = ,ans = -INF ; scanf("%d%d",&N ,&M ) ;
for ( int i= ; i<=N ; ++i ){
for ( int j= ; j<=M ; ++j ){
K++;
scanf( "%d" , &tmp ) ;//将二维数组读入一个一维数组arr中
arr[K].val = tmp ;
arr[K].x = i ;arr[K].y = j ;//记录原始坐标
}
} sort ( arr+ , arr+K+ , cmp ) ;//排序 f[] = ; for ( int i= ; i<=K ; ++i ){//最长下降子序列
for ( int j= ; j<=i- ; ++j ) {
if ( Judge ( i , j ) ){//判断相邻切严格下降
f[i] = Max ( f[i] , f[j] ) ;
}
}
f[i] = f[i] + ;
} for ( int i= ; i<=K ; ++i ){//找最大值
ans = Max ( f[i] , ans ) ;
} printf ( "%d" , ans ) ; return ;
}
#include "bits/stdc++.h" using namespace std ;
const int maxN = ; int h[maxN][maxN] , f[maxN][maxN] ;
int n, m, ans = ; int DFS(int x, int y)
{
if( f[x][y] )return f[x][y];
f[x][y] = ;
if(x > && h[x][y] < h[x - ][y])f[x][y] = max(f[x][y], DFS(x - , y) + );
if(y > && h[x][y] < h[x][y - ])f[x][y] = max(f[x][y], DFS(x, y - ) + );
if(x < n && h[x][y] < h[x + ][y])f[x][y] = max(f[x][y], DFS(x + , y) + );
if(y < m && h[x][y] < h[x][y + ])f[x][y] = max(f[x][y], DFS(x, y + ) + );
ans = max(ans, f[x][y]);
return f[x][y];
}
int main()
{
scanf("%d%d", &n, &m);
for ( int i = ; i <= n ; i++ )
for ( int j = ; j <= m ; j++ )
scanf( "%d" , &h[i][j] ) ;
for(int i = ; i <= n ; i++ )
for(int j = ; j <= m ; j++ )
f[i][j] = DFS( i , j ) ;
printf("%d", ans); return ;
}
2016-09-14 15:45:58
(完)
Code[VS] 2152 滑雪题解的更多相关文章
- codevs 2152 滑雪
2152 滑雪 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场 ...
- codevs——2152 滑雪
2152 滑雪 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场 ...
- Code[VS] 1022 覆盖 题解
Code[VS] 1022 覆盖 题解 Hungary Algorithm 题目传送门:Code[VS] 1022 题目描述 Description 有一个N×M的单位方格中,其中有些方格是水塘,其 ...
- Code[VS]1690 开关灯 题解
Code[VS]1690 开关灯 题解 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description: YYX家门前 ...
- Code[VS] 2370 LCA 题解
Code[VS] 2370 小机房的树 题解 RMQ 树链剖分 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同 ...
- 洛谷[SHOI2002]滑雪题解
什么破题啊 简直就是浪费我时间! 我每天还被我xf定目标了不知道嘛! 题目 朴素的搜索只能得90分 #include <cstdio> #include <iostream> ...
- 洛谷P1434滑雪题解及记忆化搜索的基本步骤
题目 滑雪是一道dp及记忆化搜索的经典题目. 所谓记忆化搜索便是在搜索的过程中边记录边搜索的一个算法. 当下次搜到这里时,便直接使用. 而且记忆化搜索一定要满足无后效性,为什么呢,因为如果不满足无后效 ...
- Codeforces 965E Short Code 启发式合并 (看题解)
Short Code 我的想法是建出字典树, 然后让后面节点最多的点优先向上移到不能移为止, 然后gg. 正确做法是对于当前的节点如果没有被占, 那么从它的子树中选出一个深度最大的点换到当前位置. 用 ...
- CODE FESTIVAL 2017 Final题解
传送门 \(A\) 咕咕 const int N=55; const char to[]={"AKIHABARA"}; char s[N];int n; int main(){ s ...
随机推荐
- OS Boot Loader -- 启动器
这篇文章先抛出来,现在还没有彻底研究明白,但可以做个个人的小结和整理: 记得刚开始搞Linux的时候,普遍采用的是grub,后来有了grub2,尤其是在ubuntu那种非常差劲的不稳定的更新频繁的系统 ...
- 谈谈Delph中的类和对象2---类可以理解成一种特殊的数据结构、类型转换
三.类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换.比如下面代码为一个按钮(Button1)的单击事件 procedu ...
- ShooterGame 学习笔记1 PlayerPawn的两个Mesh的可见性
GameMode Override 为 ShooterGame_TeamDeathMatch GameMode中设置的Default Pawn Class 为 PlayerPawn , PlayerP ...
- C中的野指针—如何避免
转自:http://www.cnblogs.com/viviwind/archive/2012/08/14/2638810.html 先看一个例子: struct student{ char* nam ...
- JDBC之——一个单线程JDBC基类和一些注意事项
下面的一个DBase基类提供了一些jdbc的基本操作,配置文件的配置部分并不准确,只是在自己机器上的mysql中测试过.. 数据库的增删改方法中都在开始调用了getConnection方法,末尾调用了 ...
- 汇编指令CLI/STI
CLI禁止中断发生STL允许中断发生 这两个指令只能在内核模式下执行,不可以在用户模式下执行:而且在内核模式下执行时,应该尽可能快的恢复中断,因为CLI会禁用硬件中断,若长时间禁止中断会影响其他动作的 ...
- Windows下MySQL zip版的简单安装
1.下载MySQL-5.5.10-win32.zip的版本.2.解压到任意路径,比如"D:\Programm Files\".3.进入MySQL路径,复制my-small.ini为 ...
- SoapUI之webservice接口测试(一)
1.新建soap project 添加后出现接口内容 2.为了方便后续的测试,以防某些参数删除错了,这边需要新建测试集 3.点开新建的测试集可以发现,里面的内容跟原始测试集内容是一样的 然后就可以在这 ...
- LoadRunner如何监控Tomcat性能
使用LoadRunner做性能测试,一般的直觉是LR只能完成脚本录制和编写模拟用户的请求行为,但是在某些情况下,要监控一些中间件或web服务器的性能时,就不能通过录制脚本来完成了,那么就需要手工来编写 ...
- Codeforce 493c
H - Vasya and Basketball Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & ...