• SDUT2857:艺术联合会(简单dp)


    链接:  http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2857

    题目解析:

    这是去年校赛的题目,当时没做出来,现在才补,真水,这题就是一个简单dp。

    看第k个人画第m幅画的时候,要考虑两个时间,1.第k-1个人画完第m幅画的时间,2.第k个人画完第m-1幅画的时间。

    这两个时间的最大者+t[m][k]就是第k个人画完第m幅画的时间。

    代码如下:

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #include <queue>
    #define inf 0x3f3f3f3f
    typedef long long ll;
    #define eps 1e-9
    using namespace std;
    int n,m,t[50010][6];
    int dp[50010][6];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            memset(t,0,sizeof(t));
            scanf("%d%d",&m,&n);
            for(int i=1; i<=m; i++)
            {
                for(int j=1; j<=n; j++)
                {
                    scanf("%d",&t[i][j]);
                }
            }
            memset(dp,0,sizeof(dp));
            for(int i=1; i<=n; i++)
            {
                for(int j=1; j<=m; j++)
                {
                    dp[j][i]=max(dp[j][i],(max(dp[j][i-1],dp[j-1][i])+t[j][i]));
                }
            }
            printf("%d",dp[1][n]);
            for(int i=2; i<=m; i++)
                printf(" %d",dp[i][n]);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    洛谷P1272 重建道路
    uva 10004
    uva10305
    uva 10044
    uva 120
    uva699
    uva297
    uva11111
    uva 101
    uva10152 ShellSort
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/4270119.html
Copyright © 2020-2023  润新知