Problem Description

穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关。要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑!可怜的yifenfei为了去救MM,义无返顾地跳进了迷宫。让我们一起帮帮执着的他吧!

命运大迷宫可以看成是一个两维的方格阵列,如下图所示:

yifenfei一开始在左上角,目的当然是到达右下角的大魔王所在地。迷宫的每一个格子都受到幸运女神眷恋或者痛苦魔王的诅咒,所以每个格子都对应一个值,走到那里便自动得到了对应的值。

现在规定yifenfei只能向右或者向下走,向下一次只能走一格。但是如果向右走,则每次可以走一格或者走到该行的列数是当前所在列数倍数的格子,即:如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k) 其中k>1。

为了能够最大把握的消灭魔王lemon,yifenfei希望能够在这个命运大迷宫中得到最大的幸运值。

Input

输入数据首先是一个整数C,表示测试数据的组数。
    每组测试数据的第一行是两个整数n,m,分别表示行数和列数(1<=n<=20,10<=m<=1000);
    接着是n行数据,每行包含m个整数,表示n行m列的格子对应的幸运值K ( |k|<100 )。

Output

对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。请对应每组测试数据输出一个整数,表示yifenfei可以得到的最大幸运值。

Sample Input

1
3 8
9 10 10 10 10 -10 10 10
10 -11 -1 0 2 11 10 -20
-11 -11 10 11 2 10 -10 -10

Sample Output

52

思路:

设:dp[i][j]是第i行第j列的幸运值的和

则:

状态方程:

向下与向右走一格的情况:dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

走当前所在列数倍数格的情况:dp[i][j]=max(dp[i][j],dp[i][j/k]);

最后记得加上当前格的值:dp[i][j]+=num[i][j];

边界条件:dp[1][0]=0;

dp[0][1]=0;

注意:由于存在负数,需将dp初始化为一个极小的负数。

Source Program

#include<iostream>
#include<cstring>
#define N 1001
using namespace std;int num[21][N];
int dp[21][N];int main()
{int c,n,m;int i,j,k;cin>>c;while(c--){cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)cin>>num[i][j];/*由于存在负数,需初始化为一很大的负数*/for(i=0;i<=n;i++)dp[i][0]=-999999;for(j=0;j<=m;j++)dp[0][j]=-999999;/*边界条件*/dp[1][0]=0;dp[0][1]=0;for(i=1;i<=n;i++){for(j=1;j<=m;j++){dp[i][j]=max(dp[i-1][j],dp[i][j-1]);//向下与向右走一格的情况for(k=2;k<=m;k++)//走当前所在列数倍数格的情况if(j%k==0)dp[i][j]=max(dp[i][j],dp[i][j/k]);dp[i][j]+=num[i][j];//加上当前格的值}}cout<<dp[n][m]<<endl;}}

命运(HDU-2571)相关推荐

  1. HDU 2571 命运

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  2. 【HDU - 2571】 命运(记忆化搜索)

    题干: 穿过幽谷意味着离大魔王lemon已经无限接近了!  可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷 ...

  3. 命运(HDU 2571 简单动态规划)

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. hdu 2571 命运

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. HDU - 2571 

    穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷宫中被困1 ...

  6. HDU 2571(dp)题解

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  7. selenium 页面经常改变元素_selenium用jquery改变元素属性

    一.jQuery 语法 jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作. 1.基础语法: $(selector).action() 选择符(selector)即," ...

  8. 个人DP训练(基础版)

    题目链接    hdu 2955 Robberies 01背包,转化为求被抓的概率. 题目链接       hdu   1864  最大报销额 01背包,每张发票的总额为容量和价值,注意预处理数据,对 ...

  9. sdkd2019.3.20训练题目

    A. HDU 2046 第一次看到这个,题目,想到的是动态规划,真是思维僵化了,总想套,而如果仔细想它的构成方法,就会很容易想到汉诺塔的那个想法,面对复杂的问题,先思考距离胜利一步之遥的时候要怎么解决 ...

  10. 有趣的动态规划题目(一)

    文章目录 [HDOJ 2084.数塔] [HDOJ 1176.免费馅饼] [HDOJ 1864.最大报销额] [HDOJ 1003.Max Sum] [HDOJ 1506.Largest Rectan ...

最新文章

  1. 1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器
  2. 荔枝FM 字体文件 IconFontTextView
  3. 汇编语言ac和c何时为1,汇编语言课堂练习一(参考答案)
  4. 专业网络推广浅析蜘蛛对网站有抓取但没收录的现象
  5. 自学python需要安装什么软件-学Python需要安装什么软件?Python软件工具大全
  6. dos下查看机器端口占用情况
  7. for循环中的参数能不省略
  8. 利用lxml爬取豆瓣小组内容文档并保存
  9. 进度条(5.16-5.22)
  10. gstreamer之RTSP Server test-mp4正确运行代码
  11. 统计学 常用的数据分析方法大总结,推荐收藏
  12. laravel框架跨域请求
  13. 我被一只老鼠的吱吱声吵醒了
  14. 如何通俗易懂地解释卷积?
  15. MGN(多粒度网络)模型训练的详细步骤
  16. ⅰcp经济模型_EOQ经济批量模型上篇(模型基础)
  17. [ 安装 ] MySQL安装步骤!
  18. Win11家庭版安装+PE 完结版
  19. 20170922在arduino IDE添加mega16\32\64\128 mcu支持
  20. 零基础可以学习数据分析吗,有没有好的培训机构推荐?

热门文章

  1. 深入理解MySQL底层架构,看这一篇文章就够了!
  2. 从3000米高空,一跃而下…
  3. 痛心!Pandownload开发者被抓!我终于决定使用Docker搭建一个多端同步网盘!
  4. 一个合格的程序员,需要哪些必备技能?
  5. 图解 ElasticSearch 原理,太牛了
  6. 华为程序员写代码十几年没有被拿去“祭天”,靠的是这5条口诀
  7. Docker 安装 MySQL5.7
  8. Docker - 安装并持久化PostgreSQL数据
  9. 总结各类损失函数【修】
  10. Java比较器之Comparable接口与Comparator接口的使用