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

分析:贪婪,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. JPA @PersistenceContext和@Transactional Annotation

    JPA(Java Persistence API )也就是说,java存储数据API,它提供的接口更方便的存储数据,当然,经过一些复杂的,并需要使用查询操作Java Persistence query ...

  2. [Windows Phone] 实作不同的地图显示模式

    原文:[Windows Phone] 实作不同的地图显示模式 前言 本文章主要示范如何让地图有不同的模式产生,例如平面图.地形图.鸟瞰图.鸟瞰图含街道等. 这部分主要是调整 Map.Cartograp ...

  3. Word文件交换的电脑打开字体、排版变化的原因和解决方法!

    方案: 有时候.我们好不easy用Word写好文档,做好排版发给别人,别人会告诉你格式怎么是乱的啊,标题.正文.页眉页脚什么的格式都变了. 想尽各种办法都没能得到解决,那么出现这样的情况的原因究竟是什 ...

  4. 第三届蓝桥杯Java高职组决赛第三题

    题目描述: 某少年宫引进了一批机器人小车.可以接受预先输入的指令,按指令行动.小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字). 例如,我们可以对小车输入如 ...

  5. Centos memcached的php拓展 管理界面

    确定已安装apache 一.安装php5 1.安装libxml2 tar zxvf libxml2-.tar.gz cd libxml2- ./configure --prefix=/usr/loca ...

  6. 9、Cocos2dx 3.0游戏开发找小三之工厂方法模式与对象传值

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27704153 工厂方法模式 工厂方法是程序设计中一个 ...

  7. 【C语言的日常实践(十四)】constkeyword详细解释

    const是C语言keyword,它定义一个变量不同意变更.使用const在一定程度上,可以提高节目的安全性和可靠性.其他.解const的作用,在看别人的代码时,对理解对方的程序有一定帮助. 1.co ...

  8. android imageButton 透明图片

    在Android有许多不规则button.例如: 这个时候,我们假设想做成不规则button的话.第一步就是搞一张边缘透明的png图片,然后用src指定到他.这个时候我们会发现,还没有达到要的效果.还 ...

  9. 你的第一个AngularJS应用--教程二:基架、建立和測试的工具

    介绍 有非常多可用的工具能够帮助你开发AngularJS 应用,那些非常复杂的框架不在我的讨论范围之中,这也是我開始这系列教程的原因. 在第一部分,我们掌握了AngularJS框架的基本结构,开发了第 ...

  10. STL源代码剖析(一) - 内存分配

    Allocaor allocator 指的是空间配置器,用于分配内存.STL中默认使用SGI STL alloc作为STL的内存分配器,尽管未能符合标准规格,但效率上更好.SGI STL也定义有一个符 ...