zoukankan      html  css  js  c++  java
  • HDU-2182-Frog

    链接:https://vjudge.net/problem/HDU-2182

    题意:

    有一只青蛙,有n个节点,开始时在1节点,有k次往右跳的机会,每次跳的距离是a-b之间。

    每个节点有一个值,到达那个节点则总值加上那个值。

    求最大能得到的值

    思路:

    dp[i][j]表示第i个节点,第j次跳跃得到的值。

    dp[1][0] = a[0]。因为第一个节点不用跳就能得到。

    代码:

    #include <iostream>
    #include <memory.h>
    #include <vector>
    #include <map>
    #include <algorithm>
    #include <cstdio>
    #include <math.h>
    #include <queue>
    #include <string>
    #include <stack>
    #include <iterator>
    
    using namespace std;
    
    typedef long long LL;
    
    const int MAXN = 1000 + 10;
    
    int dp[MAXN][MAXN];
    int a[MAXN];
    
    int main()
    {
        int t;
        int n, l, r, k;
        scanf("%d", &t);
        while (t--)
        {
            memset(dp, 0, sizeof(dp));
            scanf("%d%d%d%d", &n, &l, &r, &k);
            for (int i = 1;i <= n;i++)
                scanf("%d", &a[i]);
            dp[1][0] = a[1];
            for (int i = 1;i <= n;i++)
            {
                for (int j = i - r;j <= i - l;j++)
                {
                    if (j < 1)
                        continue;
                    for (int m = 1;m <= k;m++)
                        dp[i][m] = max(dp[i][m], dp[j][m - 1] + a[i]);
                }
            }
            int res = 0;
            for (int i = 1;i <= n;i++)
                for (int j = 1;j <= k;j++)
                    res = max(res, dp[i][j]);
            printf("%d
    ", res);
        }
    
        return 0;
    }
    

      

    转载于:https://www.cnblogs.com/YDDDD/p/10640122.html

  • 相关阅读:
    oracle—数据泵及常用参数
    NTP服务及时间同步
    kudu安装
    ogg12c 配置
    ogg12-ERROR OGG-01031 file D:OGGdirdated000000 is not in any allowed output directories
    ogg12c_静默安装
    git的基本使用
    redis数据库
    linux之网络
    flask框架基础
  • 原文地址:https://www.cnblogs.com/twodog/p/12134983.html
Copyright © 2011-2022 走看看