LeetCode LCP 51. 烹饪料理(状态枚举)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

欢迎各位勇者来到力扣城,城内设有烹饪锅供勇者制作料理,为自己恢复状态。

勇者背包内共有编号为 0 ~ 4 的五种食材,其中 meterials[j] 表示第 j 种食材的数量。
通过这些食材可以制作若干料理,cookbooks[i][j] 表示制作第 i 种料理需要第 j 种食材的数量,而 attribute[i] = [x,y] 表示第 i 道料理的美味度 x 和饱腹感 y。

饱腹感不小于 limit 的情况下,请返回勇者可获得的最大美味度
如果无法满足饱腹感要求,则返回 -1。

注意:
每种料理只能制作一次

示例 1:
输入:meterials = [3,2,4,1,2]
cookbooks = [[1,1,0,1,2],[2,1,4,0,0],[3,2,4,1,0]]
attribute = [[3,2],[2,4],[7,6]]
limit = 5输出:7
解释:
食材数量可以满足以下两种方案:
方案一:制作料理 0 和料理 1,可获得饱腹感 2+4、美味度 3+2
方案二:仅制作料理 2, 可饱腹感为 6、美味度为 7
因此在满足饱腹感的要求下,可获得最高美味度 7示例 2:
输入:meterials = [10,10,10,10,10]
cookbooks = [[1,1,1,1,1],[3,3,3,3,3],[10,10,10,10,10]]
attribute = [[5,5],[6,6],[10,10]]
limit = 1输出:11
解释:通过制作料理 01,可满足饱腹感,并获得最高美味度 11提示:
meterials.length == 5
1 <= cookbooks.length == attribute.length <= 8
cookbooks[i].length == 5
attribute[i].length == 2
0 <= meterials[i], cookbooks[i][j], attribute[i][j] <= 20
1 <= limit <= 100

https://leetcode-cn.com/contest/season/2022-spring/problems/UEcfPD/

2. 解题

  • 每种食物只能做一次,二进制01状态枚举,题目说 n 最大是 8,2^8 = 256,暴力枚举即可
class Solution {
public:int perfectMenu(vector<int>& materials, vector<vector<int>>& cookbooks, vector<vector<int>>& attribute, int limit) {int n = cookbooks.size();int ans = -1;for(int i = 1; i < (1<<n); ++i){int full = 0, deli = 0;vector<int> cost(5, 0);bool ok = true;for(int j = 0; j < n; ++j){if((i>>j)&1) // i 状态哪些位是 1{for(int k = 0; k < 5; ++k){ // 花费的食材累加cost[k] += cookbooks[j][k];if(cost[k] > materials[k]){  // 超过食材限度ok = false;break;}}full += attribute[j][1]; // 饱腹感deli += attribute[j][0]; // 美味度}if(!ok)break;}if(ok && full >= limit){ans = max(ans, deli);}}return ans;}
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Packet Tracer实验——使用三层交换机实现vlan间的通信(详解)

一、网络拓扑结构如下 实验目的&#xff1a;通过划分vlan实现了隔离广播域&#xff0c;同时还能实现vlan间的单播通信 二、为6台PC配置IP地址、子网掩码和默认网关 三、分别为2个vlan接口配置ip地址和子网掩码 四、为vlan10、vlan20分配ip地址和子网掩码&#xff0c;并命名为…

一、数据预处理——数据归一化 数据标准化

一、数据预处理——数据归一化 & 数据标准化 点击标题即可获取文章相关的源代码文件哟&#xff01; 1.1 数据无量纲化 在机器学习算法实践中&#xff0c;我们往往有着将不同规格的数据转换到同一规格&#xff0c;或不同分布的数据转换到某个特定分布的需求&#xff0c;这种…

LeetCode 2239. 找到最接近 0 的数字

文章目录1. 题目2. 解题1. 题目 给你一个长度为 n 的整数数组 nums &#xff0c;请你返回 nums 中最 接近 0 的数字。如果有多个答案&#xff0c;请你返回它们中的 最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-2,1,4,8] 输出&#xff1a;1 解释&#xff1a; -4…

HTML静态网页---标签

一、 创建HTML&#xff1a; &#xff08;一&#xff09; body的属性&#xff1a; bgcolor        页面背景色 background      背景壁纸、图片 text          文字颜色 topmargin       上边距 leftmargin       左边距 rightmargin  …

LeetCode 2240. 买钢笔和铅笔的方案数

文章目录1. 题目2. 解题1. 题目 给你一个整数 total &#xff0c;表示你拥有的总钱数。同时给你两个整数 cost1 和 cost2 &#xff0c;分别表示一支钢笔和一支铅笔的价格。 你可以花费你部分或者全部的钱&#xff0c;去买任意数目的两种笔。 请你返回购买钢笔和铅笔的 不同方…

axis=0 与axis=1 的区分

1. 使用0值表示沿着每一列或行标签\索引值向下执行方法 2. 使用1值表示沿着每一行或者列标签模向执行对应的方法 下图代表在DataFrame当中axis为0和1时分别代表的含义: df.mean(axis1)代表沿着列水平方向计算均值&#xff0c;而df.drop(name, axis1) 代表将name对应的列标签…

LeetCode 2241. 设计一个 ATM 机器

文章目录1. 题目2. 解题1. 题目 一个 ATM 机器&#xff0c;存有 5 种面值的钞票&#xff1a;20 &#xff0c;50 &#xff0c;100 &#xff0c;200 和 500 美元。初始时&#xff0c;ATM 机是空的。用户可以用它存或者取任意数目的钱。 取款时&#xff0c;机器会优先取 较大 数…

二、数据预处理——缺失值处理

二、数据预处理——缺失值处理 点击标题即可获取文章相关的源代码文件哟&#xff01; 机器学习和数据挖掘中所使用的数据&#xff0c;永远不可能是完美的。很多特征&#xff0c;对于分析和建模来说意义非凡&#xff0c;但对于实际收集数据的人却不是如此&#xff0c;因此数据挖…

LeetCode 2243. 计算字符串的数字和

文章目录1. 题目2. 解题1. 题目 给你一个由若干数字&#xff08;0 - 9&#xff09;组成的字符串 s &#xff0c;和一个整数。 如果 s 的长度大于 k &#xff0c;则可以执行一轮操作。在一轮操作中&#xff0c;需要完成以下工作&#xff1a; 将 s 拆分 成长度为 k 的若干 连续…

三、数据预处理——处理分类型数据:编码与哑变量

三、处理分类型特征&#xff1a;编码与哑变量 点击标题即可获取文章相关的源代码文件哟&#xff01; 在机器学习中&#xff0c;大多数算法&#xff0c;譬如逻辑回归&#xff0c;支持向量机SVM&#xff0c;k近邻算法等都只能够处理数值型数据&#xff0c;不能处理文字&#xff0…

LeetCode 2244. 完成所有任务需要的最少轮数

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 tasks &#xff0c;其中 tasks[i] 表示任务的难度级别。 在每一轮中&#xff0c;你可以完成 2 个或者 3 个 相同难度级别 的任务。 返回完成所有任务需要的 最少 轮数&#xff0c;如果无法完成所有任务&…

BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)...

数论神题了吧算是1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit][Status][Discuss] Description “在那山的那边海的那边有一群小肥猪。他们活泼又聪明&#xff0c;他们调皮又灵敏。他们自由自在生活在那绿色的大草坪…

四、数据预处理——处理连续型特征:二值化与分段

四、数据预处理——处理连续型特征&#xff1a;二值化与分段 点击标题即可获取文章相关的源代码文件哟&#xff01; - sklearn.preprocessing.Binarizer 根据阈值将数据二值化&#xff08;将特征值设置为0或1&#xff09;&#xff0c;用于处理连续型变量。大于阈值的值映射为1&…

LeetCode LCP 55. 采集果实

文章目录1. 题目2. 解题1. 题目 欢迎各位勇者来到力扣新手村&#xff0c;本次训练内容为「采集果实」。 在新手村中&#xff0c;各位勇者需要采集一些果实来制作药剂。 time[i] 表示勇者每次采集 1&#xff5e;limit 颗第 i 种类型的果实需要的时间&#xff08;即每次最多可以…

五、实例:在波士顿房价数据集上用随机森林回归填补缺失值

在波士顿房价数据集上用随机森林回归填补缺失值 点击标题即可获取源代码和笔记 一、引入 我们从现实中收集的数据&#xff0c;几乎不可能是完美无缺的&#xff0c;往往都会有一些缺失值。面对缺失值&#xff0c;很多人选择的方式是直接将含有缺失值的样本删除&#xff0c;这是一…

为什么引入Memcached?

刚memcached了解学习&#xff0c;一直是处于一个懵懂的状态&#xff0c;先是对memcached进行了一个了解&#xff0c;但我们为什么要在ITOO中引入memcached呢&#xff1f;当问我的时候当时自己脑子中打了一个大大的 这就必须去考虑为什么要引入memcached&#xff0c;应该从哪里开…

LeetCode LCP 56. 信物传送(迪杰斯特拉-最短路径)

文章目录1. 题目2. 解题1. 题目 欢迎各位勇者来到力扣城&#xff0c;本次试炼主题为「信物传送」。 本次试炼场地设有若干传送带&#xff0c;matrix[i][j] 表示第 i 行 j 列的传送带运作方向&#xff0c;"^","v","<",">" 这四…

六、Numpy的使用(详解)

3.1.2 ndarray介绍 点击标题即可获取文章的源代码和笔记 Numpy 高效的运算工具 Numpy的优势 ndarray属性 基本操作ndarray.方法()numpy.函数名() ndarray运算逻辑运算统计运算数组间运算 合并、分割、IO操作、数据处理3.1 Numpy优势3.1.1 Numpy介绍 - 数值计算库num - numerica…

PyQt5 入门

文章目录1. 安装测试2. qt 设计师 designer3. 布局管理3.1 使用布局管理器布局3.2 使用容器布局3.3 实践3.4 窗体布局3.5 设置伙伴关系3.6 tab键顺序3.7 Eric 使用4. 信号、槽关联4.1 简单入门4.2 进阶5. 菜单与工具5.1 加载其他窗口主窗体 py子窗口 py调用主程序 py测试6. 打包…

八、Pandas的基本使用

Pandas的基本使用 点击标题即可获取文章源代码和笔记 4.1.0 概要 Pandas基础处理Pandas是什么&#xff1f;为什么用&#xff1f;核心数据结构DataFramePanelSeries基本操作运算画图文件的读取与存储高级处理4.1Pandas介绍4.1.1 Pandas介绍 - 数据处理工具panel data analysis…