【HDU2571】命运

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>

using namespace std;
const int MAXN = 100;
const int MAXM = 1100;
int maze[MAXN][MAXM];
int dp[MAXN][MAXM];
int solve(int n,int m,int N,int M)
{
//向下一次只能走一格。但是如果向右走,则每次可以走一格或者走到该行的列数是当前所在列数倍数的格子
    if(dp[n][m] != -10000000)
        return dp[n][m];
    int res = maze[n][m]; //@WA Point!!! origin:
    ///下一步可以是(x+1,y),(x,y+1)或者(x,y*k)
    if( m - 1 > 0 && m <= M ) ///左
        res = solve(n,m-1,N,M)+maze[n][m];
        ///origin: res= max(res,solve(n,m-1,N,M)+maze[n][m]);
    if( n - 1 > 0 && n <= N ) ///上
        res = max(res,solve(n-1,m,N,M)+maze[n][m]);
    for(int k = m - 1 ; k > 0 && m <= M  ; k--)
    {
        if( m % k == 0 )
        {
            res = max(res,solve(n,k,N,M)+maze[n][m]);
        }
    }
    return dp[n][m] = res;
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("B:\\acm\\DP1\\E.txt","r",stdin);
#endif
    int T = 0 , N = 0, M = 0;
    while(scanf("%d",&T) != EOF)
    {
        memset(maze,0,sizeof(maze));
        for(int i = 0 ; i < T ;i++)
        {
            scanf("%d%d",&N,&M);
            for(int n = 1 ; n <= N ; n++)
            {
                for(int m = 1 ; m <= M ; m++)
                {
                    scanf("%d",&maze[n][m]);
                    dp[n][m] = -10000000;
                }
            }
            solve(N,M,N,M);
            /*for(int n = 1 ; n <= N ; n++)
            {
                for(int m = 1; m <= M ; m++)
                {
                    printf("%d ",dp[n][m]);
                }
                printf("\n");
            }*/
            printf("%d\n",dp[N][M]);
        }
    }
    return 0;
}

题目中状态给的很明显啊
dp[i][j] = max
{ maze[i][j] + dp[i][k] // j % k == 0
, dp[i-1][j]+maze[i][j]
,dp[i][j-1]+maze[i][j]
}
问题很可能出现在maze[i][j]+dp[i][k]上。


update:
问题不是出在maze[i][j]+dp[i][k]上,而是出在三个取值全用了max上,res的默认值是maze[i][j],如果数据是全负的的话那就根本不加了!!!

警钟啊!!



Hdu 2571 命运 Hdu 2571 命运 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 解题思路:每一步的状态都会从多个状态继承下来,每次取上面或者左边自己因子位的最大值,然后加上自己这位的值,逐步更新就行; 代码如下: #include<bits/stdc++.h> using namespace std; #define inf 0x3... 阅读详情

相关推荐

hdu 2571命运(简单动态规划)

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

serendipity的博客 259

HDU 2571 - 命运(DP)

题目链接:HDU - 2571 命运 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) ...

Ripcord丶的博客 252

HDU2571 命运【动态规划DP】

命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 27549 Accepted Submission(s): 9535 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yif...

海岛Blog 633

HDU - 2571 命运

HDU - 2571 命运 1 #include<stdio.h> 2 long long int a[25][1005],sum[25][1005]; 3 long long int max(long long int x,long long int y) 4 { 5 if(x>y) ret...

weixin_30575309的博客 124

HDU2571: 命运(DP)

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

fish_lz's blogs 235

HDU 2571 命运 (简单DP)

HDU 2571 命运 (简单DP) 命运 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15663Accepted Submission(s): 5486 Problem...

weixin_43249938的博客 113

HDU 2571 命运

HDU 2571 题意易懂,原来是利用BFS队列,发现居然WA了,就看了一下别人的思路,思路很简单⊙﹏⊙b汗; 每一个点,都能从规定的方向走到该点,我们就选择能走到该点的最大的那个加, sum [i][j] =max( max(sum[i][j - 1], sum[i -1][j]), sum[i][能被j整除的]] i>2,j>2 代码 #in...

aocang4831的博客 93

命运 HDU - 2571

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

你倒是敲代码鸭. 258

【题解】HDU2571 命运

【题解】HDU2571 命运 首先是原题链接http://hdu.hustoj.com/showproblem.php?pid=2571 原题: 命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下.

Jourofant的博客 280

hdu1176免费馅饼&&hdu2571命运 经典DP

hdu1176免费馅饼  比较无语的一个题、、、、、、、、、、 题意:gameboy每秒仅能移动一米,馅饼落在0-10m范围内,求能捡到的最多馅饼数。 写了个常规的DP动态方程,改来改去还是Time Limited Exceed 伤心呀 ~~~~然而的然而,学习了一下qsort的cmp函数写法。 对于结构体比较函数,写法为:t从小打到排列,x从大到小排列 int compare(cons

Usopp 738

hdu 2571 命运

hdu 2571 命运 动态规划, dp[i][j] = max(dp[i - 1][j], dp[i][j - 1], dp[i][j / k]) #include &lt;stdio.h&gt; #define MAX 1005 #define INF -0xffffff #define max(a, b) (a &gt; b ? a : b) int dp[21...

923723914 88

hdu2571 命运

命运 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8166Accepted Submission(s): 2889 ...

chongkuachan8070的博客 114

hdu 2571 命运

命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4196    Accepted Submission(s): 1483 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了

qqspeed 1659

hdu2571命运

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

大洋深处 1376
上一篇: 【UVA11205】The broken pedometer,思路+代码,可能是最不装逼最朴素最易懂效率也最差的代码。
下一篇: 【ZOJ3471】Most Powerful, 思路+源代码+解题报告(好久没写解题报告了……)【目标达成:0.1%】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值