题意:给一个n*m的矩阵,每个点是一个蛋糕的的重量,然后小明只能向右,向下走,求在不超过K千克的情况下,小明最终能吃得最大重量的蛋糕。

思路:类似背包DP;

状态转移方程:dp[i][j][k]----在i,j位置时,最大容量为k时的最大值;

做背包循环一般从1开始,因为需要坐标-1的情况,从0开始需要特判,而且容易RE;

 1 #include <iostream>
 2 #include <cmath>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cstdlib>
 6 #include <string>
 7 #include <sstream>
 8 #include <algorithm>
 9 #define Max 2147483647
10 #define INF 0x7fffffff
11 #define N 110
12 #define ll long long
13 #define mem(a,b) memset(a,b,sizeof(a))
14 #define repu(i, a, b) for(int i = (a); i < (b); i++)
15 const double PI=-acos(-1.0);
16 using namespace std;
17 int dp[N][N][N];
18 int w[N][N];
19 int main()
20 {
21     int n,m,k;
22     while(~scanf("%d%d%d",&n,&m,&k))
23     {
24         repu(i,0,1+n)
25         repu(j,0,m+1)
26         repu(p,0,k+1)
27         dp[i][j][p] = 0;
28         repu(i,1,1+n)
29         repu(j,1,1+m)
30         scanf("%d",&w[i][j]);
31         repu(i,1,n+1)
32         {
33             repu(j,1,m+1)
34             {
35                 for(int p = w[i][j]; p<=k; p++)
36                 {
37                     int t = max(dp[i-1][j][p],dp[i][j-1][p]);///左边,上边
38                     int s = max(dp[i-1][j][p-w[i][j]]+w[i][j],dp[i][j-1][p-w[i][j]]+w[i][j]);
39                     dp[i][j][p] = max(t,s);
40                 }
41             }
42         }
43         int maxn = 0;
44         repu(p,0,k+1)
45         maxn = max(dp[n][m][p],maxn);
46         printf("%d\n",maxn);
47     }
48     return 0;
49 }

背包

转载于:https://www.cnblogs.com/ACMERY/p/4540103.html

HDU 5234 DP背包相关推荐

  1. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  2. hdu 5234 Happy birthday

    hdu 5234 Happy birthday 题意: 今天是Gorwin的生日.所以她的妈妈要实现她的一个愿望.Gorwin说她想吃很多蛋糕.所以他妈妈带她来到了蛋糕园. 这个园子被分成了n*m个方 ...

  3. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  4. 二叉苹果树(树型DP+背包)

    二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...

  5. (背包dp) 背包N讲

    文章目录 前言 相关练习题 模板题 01背包 完全背包 多重背包 小数据范围 (可朴素暴力) 中等数据范围 (二进制优化) 大数据范围 (单调队列优化) 混合背包 二维费用背包 分组背包 有依赖的背包 ...

  6. 【Acwing提高】DP·背包

    推荐:炒鸡棒的适合萌新的DP题单(大概?) [Acwing提高]DP·背包 文章目录 [Acwing提高]DP·背包 知识点 题目 采药 装箱问题 宠物小精灵之收服 数字组合 买书 货币系统1021 ...

  7. LightOJ 1079 Just another Robbery (概率dp+背包)

    题意:有n家银行,每家银行都有一定数量的钱和被抓概率,给出自己被抓概率的上限,求能获得最多的钱. 题解:概率dp+背包 用dp[]dp[]dp[]表示获得这么多钱被抓的概率.获得同等钱的概率要尽可能小 ...

  8. hdu 5234 Happy birthday 背包 dp

    Happy birthday Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  9. HDU 5234 Happy birthday 01背包

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5234 bc:http://bestcoder.hdu.edu.cn/contests/con ...

最新文章

  1. gis 大屏_胡中南:Web端GIS技术新进展 | (PPT+速记)
  2. C#String地址、拼接性能学习
  3. boost::histogram::axis::circular用法的测试程序
  4. Uboot启动全过程
  5. docker运行python程序_如何使用Docker运行多个Python脚本和一个可执行文件?
  6. 分布式事务框架_阿里分布式事务框架GTS开源啦!
  7. PHP笔记-文件上传例子
  8. MySQL数据库基础(外键约束、添加索引)
  9. IntelliJ IDEA 设置Output (输出窗口)窗口字体大小
  10. forum.anywlan.com.php,一句话让您理解WDS和WISP的区别/多数WISP路由器的简单有效的通用设置方法...
  11. linux 添加用户到组命令,linux下添加用户组和用户
  12. 算法——Locker doors
  13. ac6005直连ap 如何配置_【无线】 AC直连AP配置
  14. rog主板php,功能丰富的主板BIOS
  15. yolo系列算法思想流程简单讲解概述————(究极简单的讲述和理解)
  16. webpack中文官网
  17. 查看Windows凭据和普通凭据的密码(查看Windows中存储的密码)——mimikatz
  18. 谈商业软件的发展趋势
  19. 更深的技术探索,更多的场景实践M etaCon元宇宙技术大会圆满召开
  20. 用java设计实现一个简单的动作冒险类游戏

热门文章

  1. 【Unity3D】拖尾TrailRenderer
  2. linux下scp的常见问题解决方法
  3. build.gradle配置
  4. 【收藏】如何开始创业
  5. TencentOS 3.1安装MySQL 8.0.32
  6. jboot 在拦截器中如何获取 请求的IP地址
  7. 如何判断2个线段相交
  8. 鸿蒙:这个备胎不太冷
  9. iVX开发过程整理的常见问题与回答(二)
  10. android图片压缩总结2