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

分析:贪婪,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插件化-apkplug框架启动-02

    本文章基于apkplug v1.6.7 版本号编写,最新方式以官网最新消息为准 一 apkplug框架所须要的库文件(宿主) 可从http://git.oschina.net/plug/apkplug ...

  2. ios ios7 取消控制拉升

    //推断是否ios7 取消控制拉升 if ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0) { self.edgesFo ...

  3. SharePoint综合Excel数据与Excel Web Access Web部分

    SharePoint综合Excel数据与Excel Web Access Web部分 Excel Web Access Web零件SharePoint于Excel以电子形式提交数据. 1. 打开Exc ...

  4. 在WPF中使用PlaneProjection模拟动态3D效果

    原文:在WPF中使用PlaneProjection模拟动态3D效果 虽然在WPF中也集成了3D呈现的功能,在简单的3D应用中,有时候并不需要真实光影的3D场景.毕竟使用3D引擎会消耗很多资源,有时候使 ...

  5. post跨域请求

    [名词解释] 跨域:https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript 同源策略 ...

  6. Dictionary带来的一种隐式内存泄漏

    当心Dictionary带来的一种隐式内存泄漏 最近在看Dictionary的源代码的时候, 突然想到Dictionary的不当使用中有一种隐含内存泄漏的可能. 简化使用场景 小A正在写一个简单的图书 ...

  7. Directx11学习笔记【十二】 画一个旋转的彩色立方体

    上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...

  8. leetcode第一刷_Maximum Depth of Binary Tree

    这道题预计是ac率最高的一道了.你当然能够用层序遍历,我佩服你的耐心和勇气.由于看到别人的三行代码,会不会流眼泪呢.. class Solution { public: int maxDepth(Tr ...

  9. ListView 实现多选/无线电

    ListView本身与无线电.多选模式.由listview.setChoiceMode设置: listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) ...

  10. 从XML文件乱码问题,探寻其背后的原理(转)

    由于网友反应本文图片不能显示,由于时间关系未能及时修正.请访问原文地址: 本文出自http://blog.csdn.net/dinglang_2009/article/details/6895355, ...