hdu2182 - Frog
2015-08-14 20:44
351 查看
题目大意:有一只青蛙,在一条长度为n的路上,总共可以跳k次,每次跳的t个单元(A<=t<=B),不能后退,而路上每个位置都放置有昆虫,求青蛙最多可以吃到的昆虫数
思路分析:01背包的变形,dp[ i ][ j ] 为青蛙跳j次到达i位置可以吃到的最多的昆虫数,
状态转移方程为dp[ i ][ j ] = max( dp[ i ][ j ] , dp[ t ][ j - 1 ] + p[ i ] ),需要注意的一点是青蛙起点的昆虫数
思路分析:01背包的变形,dp[ i ][ j ] 为青蛙跳j次到达i位置可以吃到的最多的昆虫数,
状态转移方程为dp[ i ][ j ] = max( dp[ i ][ j ] , dp[ t ][ j - 1 ] + p[ i ] ),需要注意的一点是青蛙起点的昆虫数
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int p[105]; int dp[105][105]; int n,a,b,k; int main() { int t; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); scanf("%d%d%d%d",&n,&a,&b,&k); for(int i=1;i<=n;i++) scanf("%d",&p[i]); for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { for(int r=i+a;r<=i+b&&r<=n;r++) dp[r][j]=max(dp[r][j],dp[i][j-1]+p[r]); } } printf("%d\n",dp [k]+p[1]); } return 0; }
相关文章推荐
- 在 Vim 中设置 Tab 为4个空格
- 在 Vim 中设置 Tab 为4个空格
- 对给定数组按奇偶性划分,不改变相对顺序
- 大括号扩展插件
- light oj 1047-neighbor house
- 机房收费系统——转换list泛型时,字段名称不对应出现问题
- IncorrectArchitecture问题解决办法
- Repeated DNA Sequences
- springmvc中的几个问题
- Java日志框架——Mybatis选用的日志框架解决方案
- hdu 4324 Triangle LOVE(拓扑判环)
- BNU 4216.修路
- 黑马程序员一一Java的多线程笔记
- nginx之身份验证
- 从字符串A中删除字符串B的所有字符
- 周赛A题
- 解决C3P0在Linux下Failed to get local InetAddress for VMID
- 快速上手之 C# 操作Directory类
- 有关指针的一道题
- reverseCLGeocode地图上的编码与反编码