蓝桥杯算法提高VIP-贪吃的大嘴
题目
题目链接
题解
动态规划。
多重背包模板题。
转化成要放满承重为m的背包,所需的物品的最小价值为多少;每个物品的价值就是1,即1个,每种物品还有数量限制,套用多重背包模板即可。
代码1是二维实现,代码2是一维实现。
代码1
#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = 2e4+10;int dp[N][M], v, c;
int n, m;int main()
{cin>>m>>n;memset(dp, 0x3f, sizeof dp); // 最小值就这样初始化dp[0][0] = 0;for(int i = 1;i <= n;i ++) {cin>>v>>c;for(int j = 0;j <= m;j ++) for(int k = 0;k <= c && k*v <= j;k ++)dp[i][j] = min(dp[i][j], dp[i-1][j-k*v] + k);}if(dp[n][m] < 0x3f3f3f3f) cout << dp[n][m] << endl;else cout << "><" << endl;
}
代码2
#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = 2e4+10;int dp[M], v, c;
int n, m;int main()
{cin>>m>>n;memset(dp, 0x3f, sizeof dp);dp[0] = 0;for(int i = 1;i <= n;i ++) {cin>>v>>c;for(int j = m;j >= v;j --) for(int k = 1;k <= c && k*v <= j;k ++)dp[j] = min(dp[j], dp[j-k*v] + k);}if(dp[m] < 0x3f3f3f3f) cout << dp[m] << endl;else cout << "><" << endl;
}
蓝桥杯算法提高VIP-贪吃的大嘴相关推荐
- [蓝桥杯][算法提高VIP]贪吃的大嘴(多重背包)
题目描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她 ...
- 贪吃的大嘴java_[蓝桥杯][算法提高VIP]贪吃的大嘴-题解(Java代码)
解题思路:多重背包 注意事项: 参考代码: import java.util.Arrays; import java.util.Scanner; public class llq1{ public s ...
- c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)
题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...
- [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- [蓝桥杯][算法提高VIP]夺宝奇兵-dp
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- [蓝桥杯][算法提高VIP]阮小二买彩票
[蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...
- [蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]
题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票 时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都 ...
- [蓝桥杯][算法提高][vip] 阮小二买彩票
蓝桥杯 ADV-66 算法提高 阮小二买彩票 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察 ...
- [蓝桥杯][算法提高VIP]合并石子(区间dp+平行四边形优化)
题目描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子合并成一堆的最小花费. 输入 输入第一行包含一个整数 ...
最新文章
- 轻雀协作客户最佳实践之A站
- Raspberry Pi 4B 循迹模块
- 生成模型和判别模型对比
- SAP UI5 应用开发教程之八 - 多语言的支持
- 本想试试看,结果却拿到了京东的Offer
- matlab 画箱线图boxplot简单用法
- chart放入panel_使用JPanel将ChartPanel添加到JTabbedPane
- Linux Shell 编程笔记
- [Android]Android TraceView工具使用
- 用Python实现一个简单的微信聊天机器人
- Android 倒计时器工具类
- Markdown部分语法使用
- python求一元三次方程的根_方程的计算机处理924_Fortran
- 一个玩游戏的失足青年,转行做游戏开发到教育的挣扎过程(3)
- 2017最新总结政府大数据应用案例及启示
- python格式化输出(二)--字符串的格式化输出
- 修改前端HBuilder X软件中字体颜色
- 一个生日微信小程序 生日动画_生日当天发朋友圈的文案 生日快乐微信小句子...
- ISTQB TM考点总结之第三章
- linux安装和配置 MariaDB (ubuntu20.04)
热门文章
- 服务器文件怎么备份,何为文件备份服务器,文件备份服务器的使用方法及注意事项?...
- java枚举values_java枚举中的values遍历
- 莫言遭遇获奖烦恼-传闻缠身疲于应付采访-莫言-诺贝尔文学奖-采访
- Games106学习记录第一课
- Docker 有什么优势?
- 读书:滑铁卢 | 自嗨有度
- Python字符串类型及操作
- 疫情催化,电子合同如何逆袭成企业数字化的“好帮手”
- 成都软件从业人员达20万人
- 【问题已解决】无法定位程序输入点于XXX动态链接库***.dll上