LeetCode 879. 盈利计划(动态规划)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

集团里有 n 名员工,他们可以完成各种各样的工作创造利润。

第 i 种工作会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。

工作的任何至少产生 minProfit 利润的子集称为 盈利计划 。并且工作的成员总数最多为 n 。

有多少种计划可以选择?因为答案很大,所以 返回结果模 10^9 + 7 的值。

示例 1:
输入:n = 5, minProfit = 3, group = [2,2], profit = [2,3]
输出:2
解释:至少产生 3 的利润,该集团可以完成工作 0 和工作 1 ,或仅完成工作 1 。
总的来说,有两种计划。示例 2:
输入:n = 10, minProfit = 5, group = [2,3,5], profit = [6,7,8]
输出:7
解释:至少产生 5 的利润,只要完成其中一种工作就行,所以该集团可以完成任何工作。
有 7 种可能的计划:(0)(1)(2)(0,1)(0,2)(1,2),以及 (0,1,2) 。提示:
1 <= n <= 100
0 <= minProfit <= 100
1 <= group.length <= 100
1 <= group[i] <= 100
profit.length == group.length
0 <= profit[i] <= 100

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/profitable-schemes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[k][j] 表示 k 个人 完成收益 j 的方案数
class Solution {
public:int profitableSchemes(int n, int minProfit, vector<int>& group, vector<int>& profit) {int m = group.size();int tot = accumulate(profit.begin(), profit.end(), 0);vector<vector<long long>> dp(n+1, vector<long long>(tot+1, 0));dp[0][0] = 1;for(int i = 0; i < m; ++i){for(int k = n-group[i]; k >= 0; --k)for(int j = tot-profit[i]; j >= 0; --j){dp[k+group[i]][j+profit[i]] += dp[k][j];}}int mod = 1e9+7, ans = 0;for(int k = 0; k <= n; ++k)for(int j = minProfit; j <= tot; ++j)ans = (ans + dp[k][j])%mod;return ans;}
};

1084 ms 41.4 MB C++

  • dp[k][j] 表示 k 个人 完成 至少收益 j 的方案数
class Solution {
public:int profitableSchemes(int n, int minProfit, vector<int>& group, vector<int>& profit) {int m = group.size(), mod = 1e9+7;vector<vector<long long>> dp(n+1, vector<long long>(minProfit+1, 0));dp[0][0] = 1;for(int i = 0; i < m; ++i){for(int k = n-group[i]; k >= 0; --k)for(int j = minProfit; j >= 0; --j){dp[k+group[i]][min(minProfit,j+profit[i])] += dp[k][j];dp[k+group[i]][min(minProfit,j+profit[i])] %= mod;}}int ans = 0;for(int k = 0; k <= n; ++k)ans = (ans + dp[k][minProfit])%mod;return ans;}
};

192 ms 9.5 MB C++


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

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

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

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

相关文章

【Unity】对象池技术

【Unity】对象池技术 1.简介 对象池&#xff08;Object Pooling&#xff09;技术是一种用于优化游戏性能和内存管理的技术。 对象池可以用于各种需要频繁实例化和销毁游戏对象的场景&#xff0c;例如子弹、敌人、玩家等。其主要目标是减少频繁的内存分配和垃圾回收的次数&…

正则邮箱_自己写一个通用的邮箱正则表达式

今天把正则又复习了一遍&#xff0c;为了加深记忆&#xff0c;自己写一个邮箱的正则表达式咱们先来看几个合法的邮箱地址hd33322nat123.commaksim.kim.82d-link.uavova_lazarev1969jaagers.comb4-service.szhaopinmail.com通过观察上面几个例子&#xff0c;不难看出所有邮箱地址…

[css][移动设备]禁止横竖屏时内容自动调整

参考&#xff1a;http://www.kankanews.com/ICkengine/archives/106643.shtml iOS下当竖屏转向横屏的时候&#xff0c;发现内容字体会自动变大&#xff0c;通过各种方法设置字体大小都失败了。 需要在body中设置如下&#xff1a; text-size-adjust: none;-ms-text-size-adjust…

python gettext_python gettext使用

python中使用gettext进行语言国际化的方法1.编辑源代码, 保存为gettextdemo.pyimport gettextcatalogs gettext.find("example", localedir"locale", allTrue)print catalogs:,catalogst gettext.translation(example, "locale", fallbackTrue…

python 数字、字符串与 time时间/日期 的转换

获取当前时间戳 >>> import time >>> num time.time() # 当前时间戳, 7位浮点 >>> type(num) <class float> >>> num 1623302086.1892786数字 转 时间 >>> t time.localtime(num) # 数字 转 时间 >>> type(t…

python基础版课件_python基础课件精编版.ppt

6.10 问题解答 (1)能不能像执行.exe文件那样执行.py文件呢&#xff1f; 在Windows上是不行的&#xff0c;但是&#xff0c;在Mac和Linux上是可以的&#xff0c;方法是在.py文件的第一行加上一个特殊的注释。 (2)在实际项目中&#xff0c;条件语句用的多还是循环语句用的多&…

Convert Windows 32bit dirver to Windows 64bit

Pre-condition: 1.source code(vc6.0WDK based) Development environment: 2.VS2013 3.WDK 8/8.1 Steps: 1.Create a new project. File->New->Visual C->Windows Driver 2.Copy .c and .h source code to project 3.Modify project property xxx属性页->配置属性-…

小程序 模糊查询_[轻应用小程序]如何使用信息查询功能?

本文内容结构如下图一、查询功能是什么&#xff1f;有什么作用&#xff1f;对于企业&#xff0c;会有一些和自身业务相关的数据&#xff0c;需要给到客户提供“查询信息”或“查询缴费”服务。查询信息&#xff1a;学校、培训机构&#xff1a;查询成绩。人力招聘&#xff1a;面…

LeetCode 1887. 使数组元素相等的减少操作次数(map)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;你的目标是令 nums 中的所有元素相等。完成一次减少操作需要遵照下面的几个步骤&#xff1a; 找出 nums 中的 最大 值。记这个值为 largest 并取其下标 i &#xff08;下标从 0 开始计数&#xff09;。如果…

input和output哪个是充电_input是什么接口?告诉大家这个小常识,以后音箱接线更容易...

很多网友都遇到过这样的问题&#xff0c;在电视、电脑、音箱、功放等设备的后面&#xff0c;经常会有很多接口&#xff0c;其中有的接口旁边写着“input”&#xff0c;那么input到底是什么接口呢 &#xff0c;今天就和大家聊聊这个问题。在字面意思来看&#xff0c;“input”翻…

python中的自测语句是什么?

if __name__ __main__:main() 以上转载于:https://www.cnblogs.com/Blaxon/p/4401949.html

mqtt协议详解_阿里云物联网平台使用心得(七)MQTT协议14个报文总览

大家好&#xff0c;物联网爱好小组成员超子&#xff0c;又和大家见面了&#xff0c;超子我能力有限&#xff0c;水平不高&#xff0c;有什么错误的地方&#xff0c;欢迎板砖。超子将参考《MQTT-3.1.1标准协议中文版》PDF手册&#xff0c;详解每个报文的格式&#xff0c;以及如何…

service启动activity_「 Android 10 四大组件 」系列—Service 的 quot; 启动流程 quot;

作者&#xff1a;DeepCoder核心源码关键类路径Service 的启动过程相对 Activity 的启动过程来说简单了很多&#xff0c;我们都知道怎么去创建和启动一个 Service&#xff0c; 那么你有没有从源码角度研究过 Service 启动后在系统层是如何运作的 &#xff1f;第一次看我文章的小…

天池 在线编程 输入流

文章目录1. 题目2. 解题1. 题目 描述 给出两个输入流 inputA 和 inputB(包含退格符), 如果两个输入流最后的结果相等&#xff0c;输出 YES&#xff0c;否则输出 NO。 输入字符只包括小写字母和<。 输入流长度不超过10000。示例 样例1 输入: inputA "abcde<<&q…

[LeetCode] Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Hide TagsTree Depth-first Search方法一&#xff1a;递归&#xff0c;也是dfs/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;…

python重命名窗口_为《Python实现批量重命名》程序加一个GUI

前一篇文章(Python实现批量重命名)&#xff0c;用Pyton做了一个批量重命名的小脚本程序&#xff0c;但是觉得这个用起来不太方便&#xff0c;于是想要进行一些改进&#xff0c;最好再加上GUI。一、首先&#xff0c;它的修改路径是写死在代码中的&#xff1a;# 图片存放的路径pa…

vim使用教程(全)-最好的编辑器 2015-04-09 18:26 40人阅读 评论(0) 收藏...

vim的学习曲线相当的大&#xff0c;所以&#xff0c;如果你一开始看到的是一大堆VIM的命令分类&#xff0c;你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》&#xff0c;我觉得这是给新手最好的VIM的升级教程了&#xff0c;没有列举所有的 vim的…

mysql中有sa_SA工作-mysql设计规范

表的设计字段尽量设置not null&#xff0c;mysql的null值和空字符串不一样&#xff0c;null值占用空间&#xff0c;空字符串不占用空间。Null值占用空间&#xff0c;比较时会参与比较&#xff0c;但b树索引不会存储null值&#xff0c;因此当索引的字段包含null值&#xff0c;效…

天池 在线编程 最大子树(自底向上)

文章目录1. 题目2. 解题1. 题目 描述 给你一棵二叉树&#xff0c;找二叉树中的一棵子树&#xff0c;他的所有节点之和最大。 返回这棵子树的根节点。 我会把你返回的节点作为最优子树的树根来打印。 数据保证有且仅有唯一的解。 示例 样例 1: 输入: {1,-5,2,0,3,-4,-5} 输出…

sql随机抽取数据50条_MySQL中随机抽样

2.9 随机抽样在审计或IT审计中&#xff0c;常常使用抽样&#xff0c;也就是对具有审计相关性的总体中低于百分之百的项目实施审计程序&#xff0c;使所有抽样单元都有被选取的机会&#xff0c;为注册会计师针对整个总体得出结论提供合理基础。简单来说&#xff0c;就是我们需要…