• hdoj2571【DP基础】


    题意:中文题/
    思路:DP的思想要理解,就是从上一个最优状态使被传到的状态也是最优状态。因为很久没有打DP,所以连简单地这样的都wa了6次;(QAQ废话不多说)。
    题目要求是从(x,y)到(x,y+1)/(x+1,y)/(x,y*k),那么很明显dp[i][j]=max(前面的状态+dp[i][j]),但是你以为就这样而已么?
    1.边界问题,在两个边界上,对于(列)j=1那一列,dp[i][j]只=dp[i][j]+dp[i-1][j];
    2.初始化DP数组问题,这个的话要看具体实现了,如果你使用了不该用的状态就要有那个状态的定义。每一个状态的转变都要有定义,在条件上和限制上最优的定义。

    code:

    #include<iostream>
    #include<cstdio>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    int dp[30][1010];
    int n,m;
    void debug()
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                printf("%d ",dp[i][j]);
            }
            puts("");
        }
    }
    
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
    
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    scanf("%d",&dp[i][j]);
                }
            }
    
            for(int i=2;i<=n;i++)
            {
                dp[i][1]+=dp[i-1][1];
            }
    
            int temp;
            for(int i=1;i<=n;i++)
            {
                for(int j=2;j<=m;j++)
                {
                    if(i==1)
                        temp=dp[i][j-1];
                    else if(j==1)
                        temp=dp[i-1][j];
                    else
                        temp=max(dp[i-1][j],dp[i][j-1]);
                    for(int k=1;k<j;k++)
                    {
                        if(!(j%k))
                        temp=max(temp,dp[i][k]);
                    }
                    dp[i][j]+=temp;
                }
            }
            //debug();
            printf("%d
    ",dp[n][m]);
        }
        return 0;
    }
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934509.html
Copyright © 2020-2023  润新知