HDU-2182-Frog

传送门

这道题是一道dp哟~

题目大意:青蛙吃苍蝇问题,问在一条长度为n的路上,区间为[0, n),每一个点都有相对数量的苍蝇,这只青蛙在位置为0的地方,给定跳跃范围[A, B],青蛙在跳K步之后会疲惫,就无法再跳跃了,问青蛙最多能吃到多少只苍蝇。

本题思路:我们定义dp[i][j]
dp[i][j]表示第j次跳跃时,在i的位置,此时吃的最大苍蝇数。
那么我们的状态转移方程就从前面的状态的来或者维护当前的最大值。
d[i + j][k + 1] = max(dp[i + j][k + 1], dp[i][k] + a[i + j]);
表示第k + 1次的跳跃,在i + j的位置时,比较前面第k次的跳跃,在i的位置,跳跃j格,j在[A,. B]的范围之内,到达i + j位置的苍蝇数,与当前值比较,获得最大值即可。

初始化部分:dp[i][j]初始化为-1
dp[0][0] = a[0];是表示当前青蛙在位置为0的地方本来就有苍蝇。

我们在三重循环处理的时候记得判断一下i + j不能超过n的范围,并且还要判断在已经到达dp[i][k]的情况下才能进行dp[i + j][k + 1]的转移。其实这就是表示开始的位置已经固定了。不能自由选择开始的位置。

最后我们在跑一遍维护一下ans的最大值就可以拉~

代码部分:

#include <bits/stdc++.h>
#define mst(a, n) memset(a, n, sizeof(a))
using namespace std;
const int N = 1e2 + 10;int t;
int n, a, b, k;
int q[N];
int dp[N][N];int main()
{cin >> t;while (t--){scanf ("%d%d%d%d", &n, &a, &b, &k);for (int i = 0; i < n; i++){scanf ("%d", &q[i]);} mst(dp, -1);dp[0][0] = q[0];for (int i = 0; i < n; i++){for (int j = a; j <= b; j++){for (int z = 0; z <= k; z++){if (i + j < n && dp[i][z] != -1){dp[i + j][z + 1] = max(dp[i + j][z + 1] , dp[i][z] + q[i + j]);}}}}int ans = q[0];for (int i = 0; i < n; i++){for (int j = 0; j <= k; j++){ans = max(ans, dp[i][j]);}}cout << ans << endl;}return 0;
}

HDU-2182-Frog相关推荐

  1. hdu 5037 Frog 贪心 dp

    哎,注意细节啊,,,,,,,思维的严密性..... 11699193 2014-09-22 08:46:42 Accepted 5037 796MS 1864K 2204 B G++ czy Frog ...

  2. HDU 5037 Frog

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5037 题意:一只青蛙从0跳到m,最远能跳l,只能在石头上跳.给出一开始n个石头的位置,我们是上帝,能放 ...

  3. HDU 5037 Frog(2014年北京网络赛 F 贪心)

    开始就觉得有思路,结果越敲越麻烦...  题意很简单,就是说一个青蛙从0点跳到m点,最多可以跳l的长度,原有石头n个(都仅表示一个点).但是可能跳不过去,所以你是上帝,可以随便在哪儿添加石头,你的策略 ...

  4. hdu 5037 Frog(贪心)

    题意:有一只青蛙想从0点跳到M点.从0点到M点有N块石头,给出你N块石头的位置.青蛙跳跃的长度为0~L.你上帝,当青蛙无法跳跃的时候你可以帮助它. 可以无限制的在池塘内任何一点添加石头,并且你是仁慈的 ...

  5. HDU 5919 Sequence II 主席树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5919 Sequence II Time Limit: 9000/4500 MS (Java/Othe ...

  6. HDU 5573 Binary Tree 构造

    Binary Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 Description The Old Frog King lives ...

  7. HDU 5914 Triangle 数学找规律

    Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...

  8. HDU 5914 - Triangle

    题目 HDU 5914 Triangle Problem Description Mr. Frog has n sticks, whose lengths are 1,2, 3⋯n respectiv ...

  9. hdu与poj题目分类

    POJ 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(po ...

  10. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

最新文章

  1. LeetCode 55. 跳跃游戏 中等难度
  2. inline-block什么意思中文_css中inline-block是什么?inline-block布局的使用
  3. python玩转android_Android上执行python脚本-QPython
  4. 画原型前需要思考的一些事(上)
  5. 【模电基础】滤波电容的选择
  6. 设计模式(三):观察者模式与发布/订阅模式区别
  7. W3C专业术语翻译对照表
  8. iview标签页的点击方法_18页PPT:6个高手常用的自我介绍套路,很是得人心,学习...
  9. mybatis中<mappers> ,mapperLocations,和MapperScannerConfigurer 用法
  10. 一个神奇的测试_一个神奇的测试!测一测孩子的健康成长水平!
  11. python找工作学历要求_自考本科找工作被拒=自考学历没用?
  12. c语言10000以内最大的质数,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  13. 经常使用的几种OCR文档扫描工具|无水印|避免智商税
  14. 今晚与小妹亚美合作了一把qq游戏,大获全胜!
  15. Java基础之《JDK文档》
  16. Leaving fence domain… found dlm lockspace /sys/kernel/dlm/rgmanager
  17. NUL 与 NULL
  18. HTML5-CSS3-JavaScript(1)
  19. termux安装docker
  20. 【机器学习系列】之机器学习基础

热门文章

  1. paip 一千 常用汉字 高频汉字 覆盖率90
  2. 黑苹果开荒记: 华硕迷你主机 PN62 – 最后的 Hackintosh Mini
  3. 【Cheat Engine自带小游戏step1的通关思路】
  4. arcgis地图符号化(一)
  5. c语言初学者如何编写一个相加求和程序
  6. git命令详解( 五 )
  7. 对于pywin32配合spy++获得窗口句柄然后进行操作的部分理解
  8. Spring菜鸟教你看源码冲面试
  9. 最大似然估计、最大后验概率估计和贝叶斯估计
  10. Gephi不显示Betweenness Centrality等中心性的问题