Happy birthday

Time Limit: 20 Sec  Memory Limit: 256 MB

题目连接

http://acm.hdu.edu.cn/showproblem.php?pid=5234

Description

今天是Gorwin的生日。所以她的妈妈要实现她的一个愿望。Gorwin说她想吃很多蛋糕。所以他妈妈带她来到了蛋糕园。 这个园子被分成了n*m个方格子。在每一个格子里面,有一个蛋糕。第i行,第j列的格子中有一个重量为wij千克的蛋糕,Gorwin从左上角(1,1)的格子开始走,走到右下角(n,m)的格子。在每一步中,Gorwin可以向右或者向下走,即是:Gorwin站在(i,j)的时候,她可以走向(i+1,j)或者(i,j+1) (然而她不能走出这个花园)。 当Gorwin到达一个格子的时候,她可以把那个格子里面的蛋糕吃完或者不吃。但是,她不能只吃一部分。她的胃不是那么大,所以她最多只能吃K千克的蛋糕。现在,Gorwin站在左上角,她在看蛋糕园的地图,想要找出一条路,能够使得她吃到的蛋糕最多的一条路。请你来帮帮忙。

Input

多组测试数据(大概15组), 每一组数据在一行中给出n, m, K.
在接下来n行中,第i行有m个整数wi1,wi2,wi3,⋯wim,代表第i行m个蛋糕的重量。
请处理到文件末尾。

[参数约定]
所有输入均为整数。
1<=n,m,K<=100
1<= wij <=100

Output

对于每一个数据,输出一个值,代表Gorwin最多能吃到的蛋糕重量。

Sample Input

1 1 2 3 2 3 100 1 2 3 4 5 6

Sample Output

0 16

HINT

在第一组数据中,Gorwin不能吃蛋糕的一部分,所以她不能吃掉任何蛋糕。 在第二个数据中,Gorwin按照以下路径行走(1,1)->(2,1)->(2,2)->(2,3) 当她通过一个格子的时候,就把那个格子里面的蛋糕吃光。这样她吃的总重量就是1+4+5+6=16。

题意

题解:

背包DP,dp[i][j][k]表示在i,j位置,容量为k的最大值

然后就转移转移就好了!

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 200001
#define mod 10007
#define eps 1e-9
int Num;
char CH[20];
//const int inf=0x7fffffff;   //нчоч╢С
const int inf=0x3f3f3f3f;
/*inline void P(int x)
{Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts("");
}
*/
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline void P(int x)
{Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts("");
}
//**************************************************************************************int g[110][110];
int dp[110][110][110];
int main()
{//freopen("test.txt","r",stdin);int n,m,k;while(scanf("%d%d%d",&n,&m,&k)!=EOF){memset(dp,0,sizeof(dp));memset(g,0,sizeof(g));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)g[i][j]=read();int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int t=g[i][j];t<=k;t++){dp[i][j][t]=max(dp[i][j][t],max(dp[i-1][j][t],dp[i-1][j][t-g[i][j]]+g[i][j]));dp[i][j][t]=max(dp[i][j][t],max(dp[i][j-1][t],dp[i][j-1][t-g[i][j]]+g[i][j]));ans=max(ans,dp[i][j][t]);}for(int t=0;t<=k;t++){dp[i][j][t]=max(dp[i][j][t],max(dp[i-1][j][t],dp[i][j-1][t]));ans=max(ans,dp[i][j][t]);}}}printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/qscqesze/p/4525069.html

hdu 5234 Happy birthday 背包 dp相关推荐

  1. HDU 5234 DP背包

    题意:给一个n*m的矩阵,每个点是一个蛋糕的的重量,然后小明只能向右,向下走,求在不超过K千克的情况下,小明最终能吃得最大重量的蛋糕. 思路:类似背包DP: 状态转移方程:dp[i][j][k]--- ...

  2. HDU 1011 Starship Troopers 树形+背包dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1011   题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...

  3. hdu 5234 Happy birthday

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

  4. hdu 3339 In Action 背包+flyod

    In Action Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=333 ...

  5. 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序

    [题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...

  6. 背包dp的核心思想(动态规划)

    背包dp 突然发现我一直没有真正理解背包,真正的背包应该是用空间换时间的一种dp方法,本质上就是n个物品选或不选,理论上有2n2^n2n种可能结果,但是背包利用的就是值域很小这一特点来重叠子结构,所以 ...

  7. Codeforces 864E Fire(背包DP)

    背包DP,决策的时候记一下 jc[i][j]=1 表示第i个物品容量为j的时候要选,输出方案的时候倒推就好了 #include<iostream> #include<cstdlib& ...

  8. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

  9. 【bzoj1222】[HNOI2001]产品加工 背包dp

    题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工 ...

最新文章

  1. FreeMarker基础语法教程
  2. html点击图片换几种颜色,css实现点击给物品换颜色
  3. 计算机bq,BQ24721部分翻译
  4. 如何修改浏览器的默认滚动条样式
  5. 使用Nsight查找CE3的渲染bug
  6. 使用FileDialog查看文件内容
  7. linux 7 改网卡名称,CentOS7修改网卡名称
  8. Tomcat启动乱码及IDEA中tomcat信息乱码解决方法
  9. Android OpenGL ES 开发教程(24):Depth Buffer
  10. Django 工作流程
  11. nagios 飞信(fetion) 短信报警
  12. elastic-job 新手指南
  13. 台式计算机设备验收单,电脑设备验收单.doc
  14. 神策数据的进阶之路:从用户行为分析工具到全新的数字化营销闭环
  15. 两波形相位差的计算值_变压器损耗计算公式
  16. 废旧光盘手工小制作_废旧物手工制作:光盘小制作
  17. java 正数转负数函数_Java数学函数将正整数转换为负数并将负整数转换为正数?...
  18. 你们还不了解YUM的使用?那就看看这篇文章把~
  19. java的接口常用命名_Java命名和目录接口,Java Naming and Directory Interface,音标,读音,翻译,英文例句,英语词典...
  20. 让更多人用到自己的代码,让信仰在风中飘扬

热门文章

  1. mysql 64 免安装_MYSQL 免安装版(windows 7/64)
  2. TCP/IP网络编程之多进程服务端(二)
  3. 哥尼斯堡的“七桥问题”(C++)
  4. Windows 2003环境下IIS下ASP+ACCESS的配置方法
  5. 用支付宝和微信可以直接跳转拉起支付,API搭建比较方便第三方支付接口首选杉德比较靠谱,
  6. 【jvm我能讲两小时056】说说Parallel old收集器的特点以及使用场景?
  7. 每当图片传过来时进行对比_每当应用开始使用Mac的网络摄像头时如何获取通知...
  8. codelite14中文语言包_Windows下CodeLite支持中文的正确设置方法
  9. Win10+VS2019编译Jpeg源码时缺少win32.mak文件的内容
  10. 树莓派Raspberry Pi上手报告