滑雪---poj1088(动态规划+记忆化搜索)
题目链接:http://poj.org/problem?id=1088
有两种方法
一是按数值大小进行排序,然后按从小到大进行dp即可;
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h> using namespace std; #define N 110
#define met(a, b) memset(a, b, sizeof(a)) typedef long long LL; int n, m, dp[N][N], A[N][N];
int dir[][] = { {-, },{, },{, -},{, } }; struct node
{
int x, y, w;
friend bool operator<(node p, node q)
{
return p.w < q.w;
}
}a[N*N]; int main()
{
while(scanf("%d %d", &m, &n)!=EOF)
{
met(a, );
met(A, );
int len = ;
for(int i=; i<=m; i++)
{
for(int j=; j<=n; j++)
{
scanf("%d", &A[i][j]);
a[len].x = i;
a[len].y = j;
a[len++].w = A[i][j];
}
}
sort(a, a+len);
met(dp, );
int ans = ;
for(int i=; i<len; i++)
{
int Max = ;
for(int j=; j<; j++)
{
int p = a[i].x + dir[j][];
int q = a[i].y + dir[j][];
if(A[p][q] < a[i].w )
Max = max(Max, dp[p][q]);
}
dp[a[i].x][a[i].y] = Max + ;
ans = max(ans, Max+);
}
printf("%d\n", ans);
}
return ;
}
/*
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
*/
还一种是不排序,用记忆化搜索:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h> using namespace std; #define N 110
#define met(a, b) memset(a, b, sizeof(a)) typedef long long LL; int n, m, dp[N][N], A[N][N], ans;
int dir[][] = { {-, },{, },{, -},{, } }; int dfs(int x, int y)
{
if(dp[x][y]) return dp[x][y];
int Max = ;
for(int i=; i<; i++)
{
int px = x+dir[i][];
int py = y+dir[i][];
if(px> && py> && px<=m && py<=n && A[px][py]<A[x][y])
Max = max(Max, dfs(px, py));
}
dp[x][y] = Max+;
ans = max(ans, dp[x][y]);
return dp[x][y];
} int main()
{
while(scanf("%d %d", &m, &n)!=EOF)
{
met(A, );
for(int i=; i<=m; i++)
{
for(int j=; j<=n; j++)
scanf("%d", &A[i][j]);
}
met(dp, ); ans = ; for(int i=; i<=m; i++)
{
for(int j=; j<=n; j++)
{
dfs(i, j);
}
}
printf("%d\n", ans);
}
return ;
}
/*
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
*/
滑雪---poj1088(动态规划+记忆化搜索)的更多相关文章
- sicily 1176. Two Ends (Top-down 动态规划+记忆化搜索 v.s. Bottom-up 动态规划)
Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...
- ACM学习历程—POJ1088 滑雪(dp && 记忆化搜索)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- POJ-1088 Skiing(记忆化搜索)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- 洛谷P1434滑雪题解及记忆化搜索的基本步骤
题目 滑雪是一道dp及记忆化搜索的经典题目. 所谓记忆化搜索便是在搜索的过程中边记录边搜索的一个算法. 当下次搜到这里时,便直接使用. 而且记忆化搜索一定要满足无后效性,为什么呢,因为如果不满足无后效 ...
- Codevs_1017_乘积最大_(划分型动态规划/记忆化搜索)
描述 http://codevs.cn/problem/1017/ 给出一个n位数,在数字中间添加k个乘号,使得最终的乘积最大. 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提 ...
- Poj-P1088题解【动态规划/记忆化搜索】
本文为原创,转载请注明:http://www.cnblogs.com/kylewilson/ 题目出处: http://poj.org/problem?id=1088 题目描述: 区域由一个二维数组给 ...
- UVA_437_The_Tower_of_the_Babylon_(DAG上动态规划/记忆化搜索)
描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- poj1088(记忆化搜索入门题)
题目链接:http://poj.org/problem?id=1088 思路: 明显的记忆化搜索题,用dp[i][j]表示从(i,j)出发能滑的最远距离,用dfs搜索,若dp[x][y]>0即已 ...
- [NOIP2017] 逛公园 (最短路,动态规划&记忆化搜索)
题目链接 Solution 我只会60分暴力... 正解是 DP. 状态定义: \(f[i][j]\) 代表 \(1\) 到 \(i\) 比最短路长 \(j\) 的方案数. 那么很显然最后答案也就是 ...
随机推荐
- PHP代码审计笔记--弱类型存在的安全问题
0x01 前言 PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型. 弱类型比较,是一个比较蛋疼的问题,如左侧为字符串,右侧为一个整 ...
- Redis存读取数据
这一节演示下载.NET中怎样使用Redis存储数据.在.net中比较常用的客户端类库是ServiceStack,看下通过servicestack怎样存储数据. DLL下载:https://github ...
- ubuntu 上安装vnc server
Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作 ...
- zabbix设置报警通知
邮件通知是最流行的报警通知方式,这里配置邮件通知 1. 配置通知邮箱信息(发件人)的邮箱信息 2. 填写信息 3. 事件(Action)通知配置 点击创建动作 添加一个触发条件 点击添加 添加一个操作 ...
- Andoid数据存储之SQLite数据库
SQLite是一个嵌入式的并且是一个轻量级的数据库: SQLite数据库支持大部分SQL语法, 允许使用SQL语句操作数据库, 其本质是一个文件, 不需要安装启动: SQLite数据库打开只是打开了一 ...
- pgAdmin III 单表数据的导出导入
看了好几种方法也试验了几次都没成功,终于找到一种比较简单的试验成功的方法,记录下来留作备份. 将表testTable_1里的数据导入到表testTable_2里,如图: 两表的结构相同.表testTa ...
- 响应式web设计之@media
两种方式,一种是直接在link中判断设备的尺寸,然后引用不同的css文件: 1 <link rel="stylesheet" type="text/css" ...
- DIV高度自适应及注意问题(转)
本文和大家重点讨论一下DIV高度自适应及注意问题,主要包括父div高度随子div的高度改变而改变和子div高度随父亲div高度改变而改变两种情况. DIV高度自适应及注意问题 积累了一些经验,总结出一 ...
- android 线程间的通信
(转自:http://www.cnblogs.com/allin/archive/2010/05/19/1738800.html) andriod提供了 Handler 和 Looper 来满足线程间 ...
- rabbitmq日志记录进出的每条消息
参考: https://blog.csdn.net/u013256816/article/details/76039201 https://blog.csdn.net/aosica321/articl ...