zoukankan      html  css  js  c++  java
  • HDU 2571 命运

    简单DP

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    const long long INF=999999999999999;
    const int maxn=1000+10;
    long long a[20+10][maxn],dp[20+10][maxn];
    int T,n,m;
    
    int main()
    {
        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("%lld",&a[i][j]);
                    dp[i][j]=-INF;
                }
            dp[1][1]=a[1][1];
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                {
                    dp[i+1][j]=max(dp[i+1][j],dp[i][j]+a[i+1][j]);
                    dp[i][j+1]=max(dp[i][j+1],dp[i][j]+a[i][j+1]);
    
                    for(int k=j+j;k<=m;k=k+j)
                        dp[i][k]=max(dp[i][k],dp[i][j]+a[i][k]);
                }
            }
            printf("%lld
    ",dp[n][m]);
        }
        return 0;
    }
  • 相关阅读:
    闭包
    线程与进程
    异常处理
    socket编程
    面向对象编程
    模块
    正则表达式
    递归、二分查找、冒泡算法
    装饰器
    迭代器与生成器
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5438870.html
Copyright © 2011-2022 走看看