POJ滑雪
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 97172 | Accepted: 36843 |
Description
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
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
Output
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
仔细分析,这题满足 dp 的无后效性,从一个点出发以后是不可能回到这个点的。我们需要按照高度从到到小来转移,这样写起来未免会有些麻烦,代码上不好实现。借助于记忆化搜索的方法可以解决这个问题,记忆化搜索的思想是对于每个状态,只要搜索一次以后,记录下这个状态的最优值,以后在需要用到这个状态就不必要搜索了,因为无后效性,最优永远都不变。
#include <iostream>
#include <cstring>
using namespace std;
int a[][];
int dp[][];
int r, c;
int xx[]={,-,,};
int yy[]={,,,-};
int dfs(int x,int y){
if (dp[x][y]!=-){
return dp[x][y];
}
int ret=;
for (int i=;i<;++i){
int tx=x+xx[i];
int ty=y+yy[i];
if (tx>= && tx<r && ty>= && ty<c && a[tx][ty]<a[x][y]){
ret=max(ret,dfs(tx,ty));
}
}
return dp[x][y]=ret+;
} int main(){
scanf("%d%d",&r,&c);
for (int i=;i<r;++i){
for (int j=;j<c;++j){
scanf("%d",&a[i][j]);
}
}
memset(dp,-,sizeof(dp));
int ans=;
for (int i=;i<r;++i){
for (int j=;j<c;++j){
if (dp[i][j] == -){
ans = max(ans,dfs(i,j));
}
}
}
printf("%d\n", ans);
system("pause");
return ;
}
代码
POJ滑雪的更多相关文章
- poj 3311 floyd+dfs或状态压缩dp 两种方法
Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6436 Accepted: 3470 ...
- 91. Decode Ways
题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...
- poj3月题解
poj2110 二分答案+bfs判定 poj2112 二分答案+最大流判定(二分答案真乃USACO亲儿子) poj1986 裸的LCA,值得注意的是,树中任意两点的距离可以等于这两点到根的距离减去2* ...
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- POJ 1088 滑雪 -- 动态规划
题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- POJ 1088 滑雪(记忆化搜索+dp)
POJ 1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 107319 Accepted: 40893 De ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
随机推荐
- 排序算法的复习和总结[PHP实现]
对于PHP中对数组的元素进行排序,这个是很经常用到的,之前的项目中也有,而且对于几种排序我们都是用的是asort arsort 等PHP原生函数,没有自己去实现,所以就对一下的几个函数进行总结,这个 ...
- 置信区间-显著性-P-值
1.置信区间:误差范围(区间)在统计概率中就叫做置信区间:简单来说置信区间就是误差范围 我们用中括号[a,b]表示样本估计总体平均值的误差范围的区间,由于a和b的确切数值取决于你希望自己对于“该区间包 ...
- WinIo驱动级键盘模拟编程
转自:http://blog.sina.com.cn/s/blog_455d7a320100vr37.html 前天无聊,翻翻自己的兴趣项目文件夹,发现了这个放下很久的项目!那是大三时候的事了.当时是 ...
- 使用JS获取input值
获取input值,设置input值 可以使用 $(".class") $("#id") $("input[name='name']") re ...
- js根据服务端返回的时间倒计时
使用服务端与本地的时间差进行计算 $(function(){ // 倒计时 var _ordertimer = null; var data =new Date(); var txt = $('.js ...
- Python学习之旅(三十八)
Python基础知识(37):访问数据库(Ⅱ) 二.MySQL MySQL是Web世界中使用最广泛的数据库服务器.SQLite的特点是轻量级.可嵌入,但不能承受高并发访问,适合桌面和移动应用.而MyS ...
- C# DataTable 转 实体类
C# 中查询结果DataTable转实体类: 比如:List<RtmInterview> rtmList = GetDataById( id); public List<RtmInt ...
- 平安银行在开源技术选型上的思考和实践 RocketMQ
小结: 1. https://mp.weixin.qq.com/s/z_c5D8fvHaYvHSczm0nYFA 平安银行在开源技术选型上的思考和实践 平安银行·吴建峰 阿里巴巴中间件 3月7日 随着 ...
- 2019年5款你必须知道的顶级ASO优化工具
仅仅几年前,品牌一直在挣扎着进入顶级榜单的时候.但随着时代的变迁,以及技术承担着市场的每一个噱头,一切都发生了变化,包括市场的传播,消费者行为和品牌影响.今天,品牌不仅仅局限于广告和促销,而且品牌的影 ...
- python learning 字符串方法
一.重点掌握的6种字符串方法: 1.join命令 功能:用于合并,将字符串中的每一个元素按照指定分隔符进行拼接 程序举例: seq = ['1','2','3','4'] sep = '+' v = ...