HDU 5234 DP背包
题意:给一个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背包相关推荐
- hdu 1171 dp(多重背包)
View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...
- hdu 5234 Happy birthday
hdu 5234 Happy birthday 题意: 今天是Gorwin的生日.所以她的妈妈要实现她的一个愿望.Gorwin说她想吃很多蛋糕.所以他妈妈带她来到了蛋糕园. 这个园子被分成了n*m个方 ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- 二叉苹果树(树型DP+背包)
二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...
- (背包dp) 背包N讲
文章目录 前言 相关练习题 模板题 01背包 完全背包 多重背包 小数据范围 (可朴素暴力) 中等数据范围 (二进制优化) 大数据范围 (单调队列优化) 混合背包 二维费用背包 分组背包 有依赖的背包 ...
- 【Acwing提高】DP·背包
推荐:炒鸡棒的适合萌新的DP题单(大概?) [Acwing提高]DP·背包 文章目录 [Acwing提高]DP·背包 知识点 题目 采药 装箱问题 宠物小精灵之收服 数字组合 买书 货币系统1021 ...
- LightOJ 1079 Just another Robbery (概率dp+背包)
题意:有n家银行,每家银行都有一定数量的钱和被抓概率,给出自己被抓概率的上限,求能获得最多的钱. 题解:概率dp+背包 用dp[]dp[]dp[]表示获得这么多钱被抓的概率.获得同等钱的概率要尽可能小 ...
- hdu 5234 Happy birthday 背包 dp
Happy birthday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- HDU 5234 Happy birthday 01背包
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5234 bc:http://bestcoder.hdu.edu.cn/contests/con ...
最新文章
- gis 大屏_胡中南:Web端GIS技术新进展 | (PPT+速记)
- C#String地址、拼接性能学习
- boost::histogram::axis::circular用法的测试程序
- Uboot启动全过程
- docker运行python程序_如何使用Docker运行多个Python脚本和一个可执行文件?
- 分布式事务框架_阿里分布式事务框架GTS开源啦!
- PHP笔记-文件上传例子
- MySQL数据库基础(外键约束、添加索引)
- IntelliJ IDEA 设置Output (输出窗口)窗口字体大小
- forum.anywlan.com.php,一句话让您理解WDS和WISP的区别/多数WISP路由器的简单有效的通用设置方法...
- linux 添加用户到组命令,linux下添加用户组和用户
- 算法——Locker doors
- ac6005直连ap 如何配置_【无线】 AC直连AP配置
- rog主板php,功能丰富的主板BIOS
- yolo系列算法思想流程简单讲解概述————(究极简单的讲述和理解)
- webpack中文官网
- 查看Windows凭据和普通凭据的密码(查看Windows中存储的密码)——mimikatz
- 谈商业软件的发展趋势
- 更深的技术探索,更多的场景实践M etaCon元宇宙技术大会圆满召开
- 用java设计实现一个简单的动作冒险类游戏