题目链接:

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

bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=585&pid=1003

题解:

由于数据比较小,所以可以转化为判定性问题,即:

  dp[i][j][kk]表示走到i,j这一点时吃了kk重的蛋糕,转移方程只要考虑这一点的蛋糕吃和不吃两种情况(01背包)

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5
 6 const int maxn=111;
 7
 8 bool dp[maxn][maxn][maxn];
 9 int arr[maxn][maxn];
10 int n,m,kilo;
11
12 void init(){
13     memset(dp,0,sizeof(dp));
14     for(int i=0;i<maxn;i++){
15         for(int j=0;j<maxn;j++){
16             dp[i][j][0]=1;
17         }
18     }
19 }
20
21 int main(){
22     while(scanf("%d%d%d",&n,&m,&kilo)==3&&n){
23         init();
24         for(int i=1;i<=n;i++){
25             for(int j=1;j<=m;j++){
26                 scanf("%d",&arr[i][j]);
27             }
28         }
29
30         for(int i=1;i<=n;i++){
31             for(int j=1;j<=m;j++){
32                 for(int k=1;k<=kilo;k++){
33                     //(i,j)这点的蛋糕不吃
34                     dp[i][j][k]=dp[i-1][j][k]|dp[i][j-1][k];
35                     //(i,j)吃这点的蛋糕
36                     if(k>=arr[i][j]){
37                         dp[i][j][k]|=dp[i-1][j][k-arr[i][j]];
38                         dp[i][j][k]|=dp[i][j-1][k-arr[i][j]];
39                     }
40                 }
41             }
42         }
43
44         int ans=0;
45         for(int i=kilo;i>=0;i--){
46             if(dp[n][m][i]){
47                 ans=i; break;
48             }
49         }
50         printf("%d\n",ans);
51     }
52     return 0;
53 }

转载于:https://www.cnblogs.com/fenice/p/5384160.html

HDU 5234 Happy birthday 01背包相关推荐

  1. HDU 2546 饭卡(01背包裸题)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  2. 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU - 2191(特殊01背包)

    悼念512汶川大地震遇难同胞--珍惜现在,感恩生活 HDU - 2191 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市 ...

  3. HDU - 最大报销额(01背包|贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  4. 最大报销额 HDU - 1864(DP+01背包)

    最大报销额 HDU - 1864 点击跳转↑ 题设:多组输入,每组输入一对Q和N,分别代表当前的公费,和需要报销的账单总数.接下来N行,每行开始一个m,接下来是m项物品的名称和价格.求:在所有符合报销 ...

  5. HDU 2546 饭卡 01背包变形

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. HDU -2546饭卡(01背包+贪心)

    这道题有个小小的坎,就是低于5块不能选,大于5块,可以任意选,所以就在初始条件判断一下剩余钱数,然后如果大于5的话,这时候就要用到贪心的思想,只要大于等于5,先找最大的那个,然后剩下的再去用背包去选择 ...

  7. hdu 2602 Bone Collector 01背包

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. hdu 4501 多维0-1背包

    小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tota ...

  9. hdu 3449 Consumer 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3449 这个题AC的有点稀里糊涂(是1A过的),采用的01背包的方法: 思路:定义了两个数组用来存储最终结果和但购 ...

最新文章

  1. AngularJS快速入门
  2. Maven2整合集成IntelliJ IDEA创建Web项目
  3. nprogress.js 头部进度条使用方法
  4. ddos压力测试_蓝盟IT外包,浅析DDoS攻击防御和DDoS攻击原理
  5. ML:MLOps系列讲解之《基于ML的软件的三个层次之03 Code: Deployment Pipelines》解读
  6. 【工业控制】学习喷墨打印技术 怎么能不知道波形
  7. UnaryOperator函数式接口
  8. android按钮置于顶层,如何把按键显示在最顶层窗口上(屏幕最顶上)
  9. Python稳基修炼之计算机等级考试易错概念题3(含答案与解析)
  10. c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
  11. debug跳出循环_Java基础-第04章:循环结构「云图智联」
  12. br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
  13. golang zip 解压、压缩文件
  14. java完成crm系统ppt,客户关系管理系统答辩稿.ppt
  15. echart 世界地图发光_echart世界地图(并且指定国家高亮显示)?
  16. walking机器人入门教程-离线建图-cartographer算法建图
  17. ESP8266 NodeMCU驱动OLED屏(SSD1306,4PIN,IIC)
  18. Vmware安装win10报错:operating system not found
  19. 管理者如何抓共性问题进行组织优化运作
  20. 如何用U盘安装Linux系统

热门文章

  1. c语言哑铃,使用一副哑铃,做好8个动作,就能练遍全身肌肉
  2. Linux基础命令介绍四:文本编辑vim
  3. 阿里Java后端开发面经,面试官都替我感到绝望
  4. stimulsoft 变量
  5. Kotlin使用高阶函数实现多方法回调
  6. Linux Realtek RTL8723BE驱动掉线重连不上问题解决
  7. 软件集成测试采用,集成测试的组成以及流程
  8. torch基本功能介绍
  9. Mac 编译 llvm / mlir
  10. php小写数字变成大写,php 小写数字怎么转大写