tyvj 1004 滑雪 记忆化搜索
2024-08-24 17:11:24
滑雪
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更长,事实上这是最长的一条。
例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一。例如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;
}
最新文章
- 关于mysql登录异常处理方法 - mysql ERROR 1045 (28000)
- 一个自己用的代码备份工具,支持delphi,android,java,可以自己添加配置,灵活支持大部分编程语言
- 电商大促准备流程v2
- Revit二次开发示例:DisableCommand
- C# WinForm程序添加引用后调用静态方法时报“Interfaces_Helper.Global”的类型初始值设定项引发异常。--->; System.NullReferenceException: 未将对象引用设置到对象的实例。
- Spring读取配置文件
- cocos2d-x lua table与json的转换
- c#中Lock(锁)的研究以及跨线程UI的操作
- vim中选择匹配文本删除技巧
- Manacher 算法
- javaWeb学习总结(8)- JSP原理
- video字幕无法显示,video视频在google中无法控制快进
- 以List为例浅谈C#的学习方法
- PO核准通知界面修改
- ccf 201503-5 最小花费 这题交上去只有10分嗨!求大佬的题解啊
- C# 自制报表组件 EzReportBuild 2.5
- @Autowired Map<;String , Object>; xx
- Espresso 开源了
- windows下docker使用及注意事项
- 【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息
热门文章
- 遍历 USB devcie,读取设备描述符 device descriptor【转】
- python使用twisted搭建的一个socket服务
- MVVM模式View和ViewModel的通信
- angular4.0和angularJS、react.js、vue.js的简单比较
- http://code52.org/DownmarkerWPF/
- 网络协议之UDP
- SQL语句添加删除修改字段[sql server 2000/2005]
- Effective STL 学习笔记: Item 22 ~ 24
- CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
- **iOS发JSON请求中字符串加转义,返回的JSON去转义