HDU-2571 命运(搜索,我才不是为了插图呢!哼!)
看到这题其实感觉就是搜索题,广搜的话看讨论区里已经有人内存超限了,所以我选择了深搜,有两种思路,第一种是从起点出发,依次更新每一个格子的最大值,这样dp[n][m]就是最后的结果了,第二种是从起点试探到终点,回溯时带回最大值,这样dp[1][1]就是最大值了。
思路1 187MS
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
const int N = + ;
const int INF = -(<<);
int mat[][N],dp[][N],n,m;
bool visit[][N]; void DFS(int x, int y, int sum){
sum += mat[x][y];
if(sum < dp[x][y]) return;
if(sum > dp[x][y]) dp[x][y] = sum;
if(x+ <= n) DFS(x+, y, sum);
if(y+ <= m) DFS(x, y+, sum);
for(int i=; y*i <= m ;i++) DFS(x, y*i, sum);
} void Init_mat(){
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) visit[i][j] = false, dp[i][j] = INF;
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d %d",&n,&m);
Init_mat();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) scanf("%d",&mat[i][j]);
DFS(,,);
printf("%d\n",dp[n][m]);
}
}
思路2 31MS
#include<iostream>
#include<cstring>
#include<cstdio> using namespace std;
const int N = + ;
const int INF = -(<<);
int mat[][N],dp[][N],n,m;
bool visit[][N]; void DFS(int x, int y, int sum){
sum += mat[x][y];
if(sum < dp[x][y]) return;
if(sum > dp[x][y]) dp[x][y] = sum;
if(x+ <= n) DFS(x+, y, sum);
if(y+ <= m) DFS(x, y+, sum);
for(int i=; y*i <= m ;i++) DFS(x, y*i, sum);
} void Init_mat(){
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) visit[i][j] = false, dp[i][j] = INF;
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d %d",&n,&m);
Init_mat();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) scanf("%d",&mat[i][j]);
DFS(,,);
printf("%d\n",dp[n][m]);
}
}
HDU-2571 命运(搜索,我才不是为了插图呢!哼!)的更多相关文章
- HDU 2571 命运 (DP)
命运 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pr ...
- HDU 2571 命运 动态规划
命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...
- hdu 2571 (命运) 那个配图女神
http://acm.hdu.edu.cn/showproblem.php?pid=2571 枚举每一个点,找出按照题目要求的这个点的上一点的最大值,合并到当前点,注意只取前面的一种情况 #inclu ...
- HDU 2571 命运
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- hdu 2571 命运(dp)
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个 ...
- HDU 2571 命运 (简单DP)
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- HDU - 2571 命运 DP倍数跳跃处理
命运 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷宫中 ...
- hdu 2571 命运(递推,请小心)
题目 //不能广搜,会超内存//可以用dp思想模拟//map 后来保存的是 保存由前面推来的最大的幸运总值的点//下标从1开始,不然倍数会有问题 //AC 代码: AC代码 //不能广搜,会超内存 / ...
- HDU 2571 命运(简单dp)
传送门 真是刷越多题,越容易满足.算是一道很简单的DP了.终于可以自己写出来了. 二维矩阵每个点都有一个幸运值,要求从左上走到右下最多能积累多少幸运值. 重点就是左上右下必须都踩到. dp[i][j] ...
- HDU 2571 命运 (入门dp)
题目链接 题意:二维矩阵,左上角为起点,右下角为终点,如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k) ,其中k>1.问最大路径和. 题解:入门dp,注意负 ...
随机推荐
- mysql 连接1251错误
问题: 解决方案: 使用管理员权限打开cmd执行以下命令: mysql -u root p use mysql alter user root@localhost identified with my ...
- 【LuoguP3348】[ZJOI2016]大森林
题目链接 题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y ...
- Python---进阶---函数式编程---按照权重排序
一. 权重是100 价格占的权重是40%,销量占的权重是17%,评级站的权重是13%,评论占的权重是30% ---------------------------------------------- ...
- R语言-变量命名规则
1.大原则:只有字母(区分大小写).数字.“_”(下划线).“.”(英文句号)可以出现. 2.数字.下划线不能开头. 3.英文句号开头不能紧接数字. 就这么简单!
- rpm安装jdk
rpm安装jdk:(https://blog.csdn.net/daerzei/article/details/80136457) 1.卸载系统自带的JDK rpm -qa|grep java # x ...
- Sublime Text3 使用Package Control 报错There Are No Packages Available For Installation 解决
"channels": [ "https://packagecontrol.io/channel_v3.json"], 无法连接的问题 网上说了挺多原因,简单例 ...
- 11 November
Weakness 求数列区间 \(\{a_n\}\) 中满足 \(i < j < k, a_i > a_j > a_k\) 的 \((i, j, k)\) 对的数目. 设对 \ ...
- 个推安卓推送SDK集成步骤详解
以下是一位开发者在集成个推安卓推送SDK时候的亲身经历: 作者:吃饱了想睡. 概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个 ...
- JavaScript-Templates
https://github.com/blueimp/JavaScript-Templates https://blueimp.github.io/JavaScript-Templates/ http ...
- 百度地图 API 及使用
如果我们想使用地图的功能,我们就得使用别人的接口,百度地图无疑是个不错的选择 百度地图的网址:http://lbsyun.baidu.com/ 我们想使用里面的功能,就必须要获取密钥 如果时第一次使用 ...