HDU 5234 Happy birthday 01背包
题目链接:
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背包相关推荐
- HDU 2546 饭卡(01背包裸题)
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU - 2191(特殊01背包)
悼念512汶川大地震遇难同胞--珍惜现在,感恩生活 HDU - 2191 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市 ...
- HDU - 最大报销额(01背包|贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- 最大报销额 HDU - 1864(DP+01背包)
最大报销额 HDU - 1864 点击跳转↑ 题设:多组输入,每组输入一对Q和N,分别代表当前的公费,和需要报销的账单总数.接下来N行,每行开始一个m,接下来是m项物品的名称和价格.求:在所有符合报销 ...
- HDU 2546 饭卡 01背包变形
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU -2546饭卡(01背包+贪心)
这道题有个小小的坎,就是低于5块不能选,大于5块,可以任意选,所以就在初始条件判断一下剩余钱数,然后如果大于5的话,这时候就要用到贪心的思想,只要大于等于5,先找最大的那个,然后剩下的再去用背包去选择 ...
- hdu 2602 Bone Collector 01背包
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 4501 多维0-1背包
小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tota ...
- hdu 3449 Consumer 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=3449 这个题AC的有点稀里糊涂(是1A过的),采用的01背包的方法: 思路:定义了两个数组用来存储最终结果和但购 ...
最新文章
- AngularJS快速入门
- Maven2整合集成IntelliJ IDEA创建Web项目
- nprogress.js 头部进度条使用方法
- ddos压力测试_蓝盟IT外包,浅析DDoS攻击防御和DDoS攻击原理
- ML:MLOps系列讲解之《基于ML的软件的三个层次之03 Code: Deployment Pipelines》解读
- 【工业控制】学习喷墨打印技术 怎么能不知道波形
- UnaryOperator函数式接口
- android按钮置于顶层,如何把按键显示在最顶层窗口上(屏幕最顶上)
- Python稳基修炼之计算机等级考试易错概念题3(含答案与解析)
- c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
- debug跳出循环_Java基础-第04章:循环结构「云图智联」
- br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
- golang zip 解压、压缩文件
- java完成crm系统ppt,客户关系管理系统答辩稿.ppt
- echart 世界地图发光_echart世界地图(并且指定国家高亮显示)?
- walking机器人入门教程-离线建图-cartographer算法建图
- ESP8266 NodeMCU驱动OLED屏(SSD1306,4PIN,IIC)
- Vmware安装win10报错:operating system not found
- 管理者如何抓共性问题进行组织优化运作
- 如何用U盘安装Linux系统