● 本题解会有详细的分析,适合初学者阅读

## 原题

Problem Description

A little frog named Fog is on his way home. The path’s length is N (1 <= N <= 100), and there are many insects along the way. Suppose the
original coordinate of Fog is 0. Fog can stay still or jump forward T units, A <= T <= B. Fog will eat up all the insects wherever he stays, but he will
get tired after K jumps and can not jump any more. The number of insects (always less than 10000) in each position of the path is given.
How many insects can Fog eat at most?
Note that Fog can only jump within the range [0, N), and whenever he jumps, his coordinate increases.

Input

The input consists of several test cases.
The first line contains an integer T indicating the number of test cases.
For each test case:
The first line contains four integers N, A, B(1 <= A <= B <= N), K (K >= 1).
The next line contains N integers, describing the number of insects in each position of the path.

Output

each test case:
Output one line containing an integer - the maximal number of insects that Fog can eat.

Sample Input

1
4 1 2 2
1 2 3 4

Sample Output

8

题目翻译

Problem Description

一只名叫Frog的大蛤蟆正在回家的路上。这条路的长度是N(1<=N<=100),沿途有许多昆虫。假设Frog的原始坐标为0。Frog可以保持静止或向前跳跃T单位,A<=T<=B。无论他呆在哪里,Frog都会吃掉所有的昆虫,但他会的K跳后累了,不能再跳了。给出了路径中每个位置的昆虫数量(始终小于10000)。Frog最多能吃多少昆虫?

请注意,Forg只能在[0,N]范围内跳跃,每当他跳跃时,他的坐标就会增加.

Input

输入由几个测试用例组成。
第一行包含一个整数T,表示测试用例的数量。
对于每个测试用例:
第一行包含四个整数N,A,B(1<=A<=B<=N),K(K>=1)。
下一行包含N个整数,描述路径中每个位置的虫子数量。

Output

对于每组测试样例,输出一行,包含一个整数,表示Fog能吃到虫子数量的最大值

题目分析

这真的是DP大水题了,打个二维滚动数组就出来了。

青蛙在长度为N的道路上跳K次,每次跳的单位为T。在这里插一句,如果这个T为1,那么这题就是一个0-1背包了…

首先,设dp[i][j]dp[i][j]dp[i][j]表示Fog跳jjj次到达iii坐标处可以吃到的最多的虫子数,那么状态转移方程:

dp[i][j]=max(dp[i][j],dp[t][j−1]+arr[i])dp[i][j]=max(dp[i][j],dp[t][j-1]+arr[i])dp[i][j]=max(dp[i][j],dp[t][j−1]+arr[i])

记得在最后答案里加上初始位置的虫子数,我们从初始位置开始滚动时是无法将初始位置的昆虫数目加入dp数组的

AC Code

#include <bits/stdc++.h>
using namespace std;
const int N = 100;
int arr[N], dp[N][N];int main(){ios::sync_with_stdio(0);int t = 0; cin >> t;while(t--){int n, a, b, k; cin >> n >> a >> b >> k;for(int i = 1; i <= n; i++) cin >> arr[i];for(int i = 1; i <= n; i++){for(int j = 1; j <= k; j++){for(int k = i + a; k <= i + b && k <= n; k++){          //枚举跳到的位置dp[k][j] = max(dp[k][j], dp[i][j - 1] + arr[k]);}}}cout << dp[n][k] + arr[1] << endl;}return 0;
}

HDU-2182 Forg 动态规划DP 题解相关推荐

  1. P2196 [NOIP1996 提高组] 挖地雷 线性动态规划DP 题解

    原题链接:[P2196 NOIP1996 提高组] 挖地雷 - 洛谷) 题目分析 看到这道题,首先感觉是个搜索,如果数据范围不大应该没问题.但是,,,我没找到数据范围啊喂~ 那就动态规划一下,先用二维 ...

  2. 【习题详解】动态规划DP:硬币游戏 蛋糕 游荡的奶牛 决斗

    动态规划DP 硬币 蛋糕塔 游荡的奶牛 格斗 硬币 题目描述 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为"Xoinc"的两人硬币游戏. 初始时,一个有N(5 <= N ...

  3. [JSOI2008]Blue Mary的战役地图——全网唯一一篇dp题解

    全网唯一一篇dp题解 网上貌似全部都是哈希+二分(反正我是大概baidu了翻了翻)(还有人暴力AC了的..) 哈希还是相对于dp还是比较麻烦的. 而且正确性还有可能被卡(当然这个题不会) 而且还容易写 ...

  4. 第4课 防卫导弹(第十章 动态规划--DP)

    //progream p10_04 /* 第4课 防卫导弹(第十章 动态规划--DP)  (<聪明人的游戏--信息学探秘 提高篇>) https://blog.csdn.net/weixi ...

  5. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  6. 动态规划: dp+递推——确定动态矩阵dp含义,确定每个状态下面临的选择和对结果值影响,选择符合题意的作为结果存储在dp中

    1.动态规划:每一个状态一定是由之前的状态推导出来的,通过总结归纳发现递推关系 2.解决动态规划问题的步骤: 确定dp数组(dp table)以及下标的含义: 每个单元内 题目所求的值,一维.二维 确 ...

  7. HDU 1159.Common Subsequence【动态规划DP】

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...

  8. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)

    AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...

  9. HDU - 5965 扫雷(dp[好理解,但不那么优的题解])

    扫雷 Problem Description 扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其中无法自拔. 该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷. 游戏中,格子 ...

  10. HDU 1160 FatMouse#39;s Speed DP题解

    本题就先排序老鼠的重量,然后查找老鼠的速度的最长递增子序列,只是由于须要按原来的标号输出,故此须要使用struct把三个信息打包起来. 查找最长递增子序列使用动态规划法.主要的一维动态规划法了. 记录 ...

最新文章

  1. 【记录】 安装qflow on ubuntu 16.04
  2. 列表解析和生成器表达式
  3. python教程:datetime与字符串互转
  4. tomcat中实现特定路径下的图片的url访问Tomcat配置图片保存路径,图片不保存在项目路径下...
  5. lucene 索引出错 no segments* file found in org.apache.lucene.store.MMapDirectory
  6. 如何使用ARM创建Teams Bot所需要的Azure资源
  7. 使用 dotnet 命令行配合 vscode 完成一个完整 .NET 解决方案的编写和调试
  8. 【机器学习】集成学习--AdaBoost
  9. SpringSecurity系列(五) Spring Security 权限设计
  10. java HTableDescriptor类解析
  11. mysql 主从同步 错误_MySQL 主从同步错误(error)解决
  12. 一文看懂常见域名后缀的含义
  13. mysql自增不连续的问题 ALTER TABLE `表名` AUTO_INCREMENT =1;
  14. 边境的悍匪—机器学习实战:第二章 端到端的机器学习项目
  15. Java随笔记 - 内核缓冲区与进程缓冲区
  16. Vue中使用高德地图
  17. JAVA8用哪个版本的MYSQL_MySQL用哪个版本,5.7还是8.0?
  18. 微信小程序搭建新闻列表(跟进上一篇博客案例)
  19. 计算机电脑维修 维修不求人,电脑维修不求人:电脑常见故障维修大全及解决方法...
  20. vue_按需引入elment、echarts和路由懒加载,减少打包体积

热门文章

  1. USB驱动之U盘驱动
  2. Leetcode 318. Maximum Product of Word Lengths
  3. 入侵检测系统的原理与应用
  4. 安卓桌面软件_iOS便签软件求推荐,有可以在iOS系统上使用的桌面便签软件吗 - 学显...
  5. 零基础CSS入门教程(7)——CSS外联写法
  6. 0901 - 虽已马不停蹄,无奈时光飞逝
  7. android appwidget桌面插件,Android:AppWidget、桌面小部件
  8. 彻底关闭Windows DefenderWindows 更新
  9. 企业为什么着急签三方_学校又在催我签三方了、三方协议很重要吗、签完三方能毁约吗……...
  10. 【数学】T检验(显著性检验)