7-4 贪吃的大嘴 (15分)
有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她希望你能设计一个程序帮她决定要吃哪些小蛋糕.

输入格式:
先输入一行包含2个整数m、n,表示大嘴需要吃美味度和为m的小蛋糕,而小蛋糕一共有n种,下面输入n行,每行2个整数,第一个表示该种小蛋糕的美味度,第二个表示蛋糕店中该种小蛋糕的总数

输出格式:
输出一行包含一个整数表示大嘴最少需要吃的小蛋糕数量,若大嘴无法通过吃小蛋糕达到m的美味度和,则输出"><“.

输入样例:
在这里给出一组输入。例如:

10 2
4 1
2 10
输出样例:
在这里给出相应的输出。例如:

4
输入样例:
在这里给出一组输入。例如:

10 2
4 1
7 3
输出样例:
在这里给出相应的输出。例如:

<

题解:这是一个多重背包的问题。
两种解法
第一种
用dp代表,美味度为i时吃的最少的蛋糕块数量。
那么他的转移方程为 dp[k]=min(dp[k],dp[k-v[i]]+1);
一共有三重循环,分别代表蛋糕的种类数,每种蛋糕的数量以及对应的美味度时吃的最少的蛋糕数。
代码如下:

#include <bits/stdc++.h>
#include <algorithm>
#include<iostream>
#include <stdio.h>
#define INF 0x3f3f3f3f
const int maxn=500005;
using namespace std;
typedef long long ll;
int dp[maxn];
int a[maxn];
int v[maxn];
int main(){int m,n,t,va;cin>>m>>n;memset(dp,INF,sizeof(dp));for(int i=1;i<=n;i++){cin>>va>>t;//dp[va]=1;/*for(int k=1;k<=t;k++){a[s+k]=v;}s+=t;*/v[i]=va;a[i]=t;}//cout<<s<<endl;;dp[0]=0;for(int i=1;i<=n;i++){for(int j=1;j<=a[i];j++){for(int k=m;k>=v[i];k--){if(k-v[i]>=0){//dp[i-a[j]*k]=k;dp[k]=min(dp[k],dp[k-v[i]]+1);}//if(k-a[i]==0)//f=1;//cout<<"i="<<k<<"dp[i]="<<dp[k]<<endl;}}}if(dp[m]!=INF)cout<<dp[m]<<endl;elsecout<<"><"<<endl;return 0;
}

第二种方法:把这个多重背包转为为一个普通的0-1背包,多重背包是同一类有多个,那么只需要把同类的蛋糕一个个单独拿出来,此时的模型就变成了一个最简单的0-1背包。
代码

#include <bits/stdc++.h>
#include <algorithm>
#include<iostream>
#include <stdio.h>
#define INF 0x3f3f3f3f
const int maxn=500005;
using namespace std;
typedef long long ll;
int dp[maxn];
int a[maxn];
int v[maxn];
int main(){int m,n,t,va;cin>>m>>n;memset(dp,INF,sizeof(dp));int s=0;for(int i=1;i<=n;i++){cin>>va>>t;//dp[va]=1;for(int k=1;k<=t;k++){a[s+k]=va;}s+=t;}//cout<<s<<endl;dp[0]=0;for(int i=1;i<=s;i++){for(int j=m;j>=a[i];j--){dp[j]=min(dp[j],dp[j-a[i]]+1);}}if(dp[m]!=INF)cout<<dp[m]<<endl;elsecout<<"><"<<endl;return 0;
}

贪吃的大嘴 多重背包 dp相关推荐

  1. [蓝桥杯][算法提高VIP]贪吃的大嘴(多重背包)

    题目描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她 ...

  2. 【蓝桥练习系统】【多重背包】 算法提高 贪吃的大嘴

    问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她 ...

  3. 贪吃的大嘴(多重背包问题)

    Description 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这 ...

  4. 贪吃的大嘴用java_算法提高 贪吃的大嘴

    试题 算法提高 贪吃的大嘴(动态规划) 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通 ...

  5. 算法提高(VIP)——贪吃的大嘴

    题目描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕. 而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度之和刚好为 m 的小蛋糕, 而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目 ...

  6. Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴

    算法提高 贪吃的大嘴 时间限制:1.0s 内存限制:256.0MB 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕 ...

  7. 贪吃的大嘴java_Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴

    算法提高 贪吃的大嘴 时间限制:1.0s 内存限制:256.0MB 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕 ...

  8. 蓝桥 贪吃的大嘴(Java)

    AILAB专项训练 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕 ...

  9. POJ1276 多重背包DP 生命不息优化不止

    POJ1276 多重背包DP题 这道题弄了一个早上-一看题目是多重背包题直接敲了一个三重for循环,无限TLE,下面附上好几种解法. Description A Bank plans to insta ...

最新文章

  1. 基于K8S构建企业级Jenkins CI/CD平台实战(三) 之 带你实战Spring boot/Cloud 项目 CI/CD jenkins自动化构建、部署过程
  2. python代码格式-Python 代码格式
  3. PyTorch深度学习实践
  4. [react] react有几种构建组件的方式?可以写出来吗?
  5. 贝壳:计算绝对值(暴力破解)
  6. linux无缝升级的版本,Angular 1 和 Angular 2 集成:无缝升级的方法
  7. 最新html取消dynsrc属性无效,HTML属性标签2
  8. 大道至简——软件工程实践者的思想 读后感3
  9. Nginx源码阅读 --- nginx evnet事件接受请求时,函数执行过程
  10. cp命令显示进度条_教程 | Linux常用命令大全
  11. SAP傻瓜式安装教程
  12. Android签名概要总结——对称加密/非对称加密、数字签名、公钥证书、ca认证机构、安卓app签名
  13. 10HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  14. java数据流编辑 kylo,Kylo 在个推信息流推荐引擎中的使用及扩展
  15. mysql评论回复表设计_数据库设计——评论回复功能
  16. python爬取豆瓣读书_爬取豆瓣读书.py
  17. wordpress面包屑-wordpress面包屑设置方法
  18. Technorati的后台数据库架构
  19. 一元三次方程求解c语言
  20. 如何评价一个开源项目(一)--活跃度

热门文章

  1. cool edit pro生成报警声
  2. 机器学习入门——Python神经网络编程②
  3. 夏季到了,50岁左右的人做哪些小生意,能每月收入一两万的?
  4. ARM指令中如何判断一个立即数是有效立即数
  5. 没有为会计年度0定义版本2021
  6. Bowtie2生成linux的动态链接库.so文件
  7. LGnet——具有缺失值的多变量时间序列预测的局部和全局时间动力学联合建模
  8. Idea Git 拉取全部远程分支, Idea Git 删除远程分支
  9. 【Dart 教程系列第 9 篇】Dart 之 clear 清空数组
  10. ECCV2022|港中文MM Lab证明Frozen的CLIP 模型是高效视频学习者