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: ...
随机推荐
- [POJ2559]Largest Rectangle in a Histogram (栈)
题意 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案). 思路 一个很老的,也是一个很好的题目. 维护一个单调栈即可. 不过在洛谷SP18 ...
- wangEditor大图片上传问题
wangEditor上传大图片时候会 上传超时.后端没有问题,我百度很多,又去群里问,都得不到答案.最后问同事,有个属性 editor.config.uploadTimeout = 10000000 ...
- React组件传值
React的单向数据流与组件间的沟通. 首先,我认为使用React的最大好处在于:功能组件化,遵守前端可维护的原则. 先介绍单向数据流吧. React单向数据流: React是单向数据流,数据主要从父 ...
- Oracle 迁移某用户的数据到Sql Server
准备条件: 1.Oracle11g数据库 2.Sql Server 2008 3.Microsoft SQL Server Migration Assistant for Oracle 步奏如下: 1 ...
- sql server里中自增长的ID重新开始排
dbcc checkident('tablename',reseed,0); 执行:dbcc checkident('TableA',reseed,0); 执行结束:中途报了几次插入重复键. 结论:用 ...
- racket安装
https://www.cnblogs.com/scige/p/3379447.html
- selenium如何操作HTML5的画布canvas上的元素
话不多少,上图如下,下图红色框内是一个html5的画布,我们要像操作右上角的保存和数据视图的时候是无法公共selenium的普通定位操作到的,那该怎么办呢? 我们先new一个Selenium的acti ...
- ip通信第七周
局域网的优点:1.具有较高的数据传输率 2.具有较低的误码率 3.具有较低的时延 4.能进行广播 网桥的基本特征:1.网桥在数据链录层上实现局域网互连 2.网桥能够互连两个采用不同数据链路层协议,不同 ...
- Homework 7 INF 552
Homework 7 INF 552,1. Generative Models for Text(a) In this problem, we are trying to build a genera ...
- man scp
SCP(1) BSD General Commands Manual SCP(1) NAME scp - secure copy (remote file copy program) ...