称号:给你一个二维矩阵,找到一个点。每一个可以移动到的位置相邻的上下,求最长单调路径。

分析:贪婪,dp。搜索。

这个问题是一个小样本,我们该怎么办。

这里使用贪心算法:

首先。将全部点依照权值排序(每一个点一定被值更大的点更新);

然后,按顺序更新排序后。每一个点更新周围的点;

最后,找到最大值输出就可以。

说明:╮(╯▽╰)╭居然拍了1000+,还以为这样的方法比較快呢(数据分布啊╮(╯▽╰)╭)。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstdio> using namespace std; typedef struct nodep
{
int value,x,y;
}point;
point now,Node[10004]; char buf[256];
int maps[102][102];
int imap[102][102];
int dmap[102][102]; int cmp1( point a, point b )
{
return a.value > b.value;
} int cmp2( point a, point b )
{
return a.value < b.value;
} int main()
{
int T,R,C,dxy[4][2] = {1,0,0,1,-1,0,0,-1};
while ( ~scanf("%d",&T) )
while ( T -- ) {
scanf("%s%d%d",buf,&R,&C);
int count = 0;
for ( int i = 1 ; i <= R ; ++ i )
for ( int j = 1 ; j <= C ; ++ j ) {
scanf("%d",&maps[i][j]);
imap[i][j] = dmap[i][j] = 1;
Node[count].value = maps[i][j];
Node[count].x = i;
Node[count].y = j;
count ++;
} sort( Node, Node+count, cmp1 );
for ( int i = 0 ; i < count ; ++ i ) {
for ( int j = 0 ; j < 4 ; ++ j ) {
now.x = Node[i].x+dxy[j][0];
now.y = Node[i].y+dxy[j][1];
if ( now.x >= 1 && now.x <= R && now.y >= 1 && now.y <= C ) {
if ( maps[now.x][now.y] < maps[Node[i].x][Node[i].y] )
if ( dmap[now.x][now.y] < dmap[Node[i].x][Node[i].y]+1 )
dmap[now.x][now.y] = dmap[Node[i].x][Node[i].y]+1;
}
}
}
sort( Node, Node+count, cmp1 );
for ( int i = 0 ; i < count ; ++ i ) {
for ( int j = 0 ; j < 4 ; ++ j ) {
now.x = Node[i].x+dxy[j][0];
now.y = Node[i].y+dxy[j][1];
if ( now.x >= 1 && now.x <= R && now.y >= 1 && now.y <= C ) {
if ( maps[now.x][now.y] > maps[Node[i].x][Node[i].y] )
if ( imap[now.x][now.y] < imap[Node[i].x][Node[i].y]+1 )
imap[now.x][now.y] = imap[Node[i].x][Node[i].y]+1;
}
}
} int max = 0;
for ( int i = 1 ; i <= R ; ++ i )
for ( int j = 1 ; j <= C ; ++ j ) {
if ( max < imap[i][j] )
max = imap[i][j];
if ( max < dmap[i][j] )
max = dmap[i][j];
} printf("%s: %d\n",buf,max);
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

UVa 10285 - Longest Run on a Snowboard的更多相关文章

  1. UVA 10285 - Longest Run on a Snowboard (记忆化搜索+dp)

    Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 seconds Memor ...

  2. UVA 10285 Longest Run on a Snowboard(记忆化搜索)

    Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...

  3. UVa 10285 Longest Run on a Snowboard - 记忆化搜索

    记忆化搜索,完事... Code /** * UVa * Problem#10285 * Accepted * Time:0ms */ #include<iostream> #includ ...

  4. UVa 10285 Longest Run on a Snowboard【记忆化搜索】

    题意:和最长滑雪路径一样, #include<iostream> #include<cstdio> #include<cstring> #include <c ...

  5. UVA - 10285 Longest Run on a Snowboard (线性DP)

    思路:d[x][y]表示以(x, y)作为起点能得到的最长递减序列,转移方程d[x][y] = max(d[px][py] + 1),此处(px, py)是它的相邻位置并且该位置的值小于(x, y)处 ...

  6. UVA - 10285 Longest Run on a Snowboard(最长的滑雪路径)(dp---记忆化搜索)

    题意:在一个R*C(R, C<=100)的整数矩阵上找一条高度严格递减的最长路.起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外.矩阵中的数均为0~100. 分析:dp[x ...

  7. 【UVA】10285-Longest Run on a Snowboard(动态规划)

    这是一个简单的问题.你并不需要打印路径. 状态方程dp[i][j] = max(dp[i-1][j],dp[i][j-1],dp[i+1][j],dp[i][j+1]); 14003395 10285 ...

  8. [动态规划]UVA10285 - Longest Run on a Snowboard

    Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...

  9. 【Uva 10285】Longest Run on a Snowboard

    [Link]: [Description] 在一个r*c的格子上; 求最长的下降路径; [Solution] 记忆化搜索; f[x][y]表示从(x,y)这个格子往下还能走多远; 因为是严格递增,所以 ...

随机推荐

  1. JS脚本加载与执行对性能的影响

    高性能JavaScript-JS脚本加载与执行对性能的影响 在web产品优化准则中,很重要的一条是针对js脚本的加载和执行方式的优化.本篇文章简单描述一下其中的优化准则. 1. 脚本加载优化 1.1 ...

  2. SQL Server :理解DCM页

    原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...

  3. UVA 10831 - Gerg&#39;s Cake(数论)

    UVA 10831 - Gerg's Cake 题目链接 题意:说白了就是给定a, p.问有没有存在x^2 % p = a的解 思路:求出勒让德标记.推断假设大于等于0,就是有解,小于0无解 代码: ...

  4. C 和 C++ 的速度相差多少,你知道吗?

    有谁清楚这个事实吗 ? 网络游戏速度至关重要, 是游戏质量的唯一标准, 尤其是即时格斗, 相差几毫秒都会影响用户体验 ! 哪怕就是 5% 的效率损失,也是 差之毫厘,失之千里, 游戏的速度是程序语言天 ...

  5. Coco2dx-3.0中怎样调用LUA

    一个用3.0的工具导出类到lua,自己主动生成代码的方法. 曾经要导出c++类到lua.就得手动维护pkg文件,那简直就是噩梦.3.0以后就会感觉生活非常轻松了. 以下我就在说下详细做法. 1.安装必 ...

  6. MFC漆摘要-截图,获得DIB/DDB图形Pixel

    1.       当前Screen进行Copy屏幕,获得BITMAP 当前屏幕Copy.须要获取当前屏幕的HDC, 一种是直接从屏幕DC抓原始图. 一种是然后使用兼容MemDC进行抓图,然后能够附加图 ...

  7. SpringSecutiry权限管理手册

    SpringSecutiry权限管理手册: 请见以下URL: http://www.mossle.com/docs/auth/html/preface.html Spring Security 参考文 ...

  8. tokumx经营报表

    #见数据库列表  show dbs #切换/创建数据库(当创建一个集合(table)的时候会自己主动创建当前数据库) use admin; #添加用户  db.addUser("zhoulf ...

  9. php编码规范个人小结

    1.原生态代码或者类的头上,注明作者,关键算法计算过程 例如 /** *@author zengmoumou *功能:根据列表ip,取得ip对应的运营商,省,市,县 */ 2.变量尽量用英文单词的组合 ...

  10. QT 4.7.6 驱动 罗技C720摄像头

    编译器: mingw32 gcc 4.8.1 mingw32 g++ 4.8.1 QT 版本: 4.8.6 OpenCV版本: 3.0.0 测试平台: win7 x64 --------------- ...