滑雪

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://www.tyvj.cn/p/1004

Description

    trs喜欢滑雪。他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。
    例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一。例如24-17-16-1,其实25-24-23…3-2-1更长,事实上这是最长的一条。

Input

输入文件

第1行: 两个数字r,c(1<=r,c<=100),表示矩阵的行列。
第2..r+1行:每行c个数,表示这个矩阵。

Output

输出文件

仅一行: 输出1个整数,表示可以滑行的最大长度。

Sample Input

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

Sample Output

25

HINT

 

题意

题解:

啊,记忆化搜索,BFS和DFS随便乱搞都行,注意得把所有点都扔进队列里面

~\(≧▽≦)/~啦啦啦

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 2001
#define mod 10007
#define eps 1e-9
//const int inf=0x7fffffff; //无限大
const int inf=0x3f3f3f3f;
/*
inline ll read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int buf[10];
inline void write(int i) {
int p = 0;if(i == 0) p++;
else while(i) {buf[p++] = i % 10;i /= 10;}
for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);
printf("\n");
}
*/
//************************************************************************************** inline ll read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int g[maxn][maxn];
int dp[maxn][maxn];
int dx[]={,-,,};
int dy[]={,,,-};
int main()
{
int mx=;
int my=;
int ma=;
int n=read(),m=read();
queue<int> qx;
queue<int> qy;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
g[i][j]=read();
dp[i][j]=;
qx.push(i);
qy.push(j);
}
}
while(!qx.empty())
{
int nowx=qx.front();
int nowy=qy.front();
qx.pop();
qy.pop();
for(int i=;i<;i++)
{
int nextx=nowx+dx[i];
int nexty=nowy+dy[i];
if(nextx<||nextx>n||nexty<||nexty>m)
continue;
if(g[nextx][nexty]<g[nowx][nowy])
{
if(dp[nowx][nowy]>=dp[nextx][nexty])
{
dp[nextx][nexty]=dp[nowx][nowy]+;
qx.push(nextx);
qy.push(nexty);
}
}
}
}
int ans=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
ans=max(dp[i][j],ans);
}
}
cout<<ans<<endl;
}

最新文章

  1. 关于mysql登录异常处理方法 - mysql ERROR 1045 (28000)
  2. 一个自己用的代码备份工具,支持delphi,android,java,可以自己添加配置,灵活支持大部分编程语言
  3. 电商大促准备流程v2
  4. Revit二次开发示例:DisableCommand
  5. C# WinForm程序添加引用后调用静态方法时报“Interfaces_Helper.Global”的类型初始值设定项引发异常。---&gt; System.NullReferenceException: 未将对象引用设置到对象的实例。
  6. Spring读取配置文件
  7. cocos2d-x lua table与json的转换
  8. c#中Lock(锁)的研究以及跨线程UI的操作
  9. vim中选择匹配文本删除技巧
  10. Manacher 算法
  11. javaWeb学习总结(8)- JSP原理
  12. video字幕无法显示,video视频在google中无法控制快进
  13. 以List为例浅谈C#的学习方法
  14. PO核准通知界面修改
  15. ccf 201503-5 最小花费 这题交上去只有10分嗨!求大佬的题解啊
  16. C# 自制报表组件 EzReportBuild 2.5
  17. @Autowired Map&lt;String , Object&gt; xx
  18. Espresso 开源了
  19. windows下docker使用及注意事项
  20. 【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息

热门文章

  1. 遍历 USB devcie,读取设备描述符 device descriptor【转】
  2. python使用twisted搭建的一个socket服务
  3. MVVM模式View和ViewModel的通信
  4. angular4.0和angularJS、react.js、vue.js的简单比较
  5. http://code52.org/DownmarkerWPF/
  6. 网络协议之UDP
  7. SQL语句添加删除修改字段[sql server 2000/2005]
  8. Effective STL 学习笔记: Item 22 ~ 24
  9. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
  10. **iOS发JSON请求中字符串加转义,返回的JSON去转义