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

分析:贪婪,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. Android实现限制EditText输入文字的数量

    一: 声明控件.          TextView hasnumTV;         TextView hasnum;// 用来显示剩余字数         int num = 50;// 限制的 ...

  2. Eclipse 在线安装fat jar插件

    在线安装步骤: eclipse菜单栏 help >software updates >Search for new features to install>new update si ...

  3. Ubuntu通过使用PyCharm 执行调试 Odoo 8.0 可能的问题

    实现步骤,请移步http://shine-it.net/index.php?topic=16603.0 或 http://www.mindissoftware.com/2014/09/11/Run-O ...

  4. OWIN 为WebAPI

    OWIN 为WebAPI 宿主 跨平台 OWIN是什么? OWIN的英文全称是Open Web Interface for .NET. 如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平 ...

  5. 360的IM可能会是什么样?

    尽管周鸿祎不止一次的说过,它不会进入IM领域,可是在360和QQ大战之后,很多用户 在卸载了QQ,寻找替代的IM工具的时候,发现他们非常难找到合适的替代IM工具,由于 好友非常难迁移.在用户的强烈 呼 ...

  6. ServiceStack.Hello——跨平台.net REST api服务搭建

    ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...

  7. 数据结构 - 双链表(C++)

    // ------DoublyLinkedList.h------ template <class T> class DNode { private: // 指向左.右结点的指针 DNod ...

  8. JSP 获得Spring 注射对象

    <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%&g ...

  9. Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表

    本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...

  10. This Android SDK requires Android Developer Toolkit version 22.6.2 or above.

    今天,在android SDK升级时间,我遇到上述错误,经过一番努力仍克服. 解决方法:android-sdk-windows\tools\lib中间plugin.prop在文档 plugin.ver ...