力扣题解(盈利计划)

879. 盈利计划

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

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

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

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

思路:

本题由于题目要求的是利润不小于minprofit的所有计划数目,因此dp设计上有所特别。

dp[i][j][k]表示前i个工作,利润不小于j,所需工人不大于k的所有计划数目,则dp的组成:

dp[i][j][k]=dp[i-1][j][k]+dp[i-1][j-p[i]][k-g[i]],此处要求k-g[i]必须大于等于0,因为不可能存在人数小于一个负数的情况,但j-p[i]可以小于等于0,因此存在利润大于一个负数的情况,注意,这是因此此处dp的设计含义导致的。但是数组下标不能是负的,而利润正常也不会是负的,因此对于j-p[i]小于零的情况,其可能的计划数目和j位置取0的计划数目一致,因此实质上dp[i][j][k]=dp[i-1][j][k]+dp[i-1][ max(j-p[i] ,0) ][k-g[i]]。

初始化:

当j=0的时候,即求利润大于等于零的情况,则不管i,k取什么值,都至少有所有都不取这一种选择方法使得j==0成立,因此dp[0][j][0]=1.

优化:

此处dp[i][][]之和dp[i-1][][]有关,因此可以化成二维,主要这样的话j,k要从大到小遍历。

class Solution {
public:int profitableSchemes(int n, int m, vector<int>& g, vector<int>& p) {const int mod=1e9 + 7;int len=g.size();vector<vector<int>>dp(n+1,vector<int>(m+1));for(int j=0;j<=n;j++){dp[j][0]=1;}for(int i=1;i<=len;i++)for(int j=n;j>=g[i-1];j--)for(int k=m;k>=0;k--){dp[j][k]+=dp[j-g[i-1]][max(0,k-p[i-1])];dp[j][k]%=mod;}return dp[n][m];}
};

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

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

相关文章

Unity UGUI 之 Toggle

​本文仅作学习笔记与交流&#xff0c;不作任何商业用途本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正​ 1.什么是Toggle&#xff1f; Unity - Manual: Toggle 带复选框的开关&#xff0c;可…

等保测评的未来展望:智能化、自动化与合规性的深度融合

随着信息技术的飞速发展&#xff0c;网络安全威胁日益复杂多变&#xff0c;保障信息系统安全成为各行各业不可忽视的重要任务。等级保护&#xff08;简称“等保”&#xff09;作为国家信息安全保障的基本制度&#xff0c;对于提升我国关键信息基础设施的安全防护能力具有重要意…

【Unity】Android Failed to transform Error while dexing.

文章目录 一、背景二、问题描述三、原因和解决方法 一、背景 1、Unity 2021.3.33f1 2、Firebase 11.7.0 3、升级至API-34 二、问题描述 错误信息 Failed to transform play-services-measurement-api-21.5.0.aar (com.google.android.gms:play-services-measurement-api:21.5.…

算法力扣刷题记录 五十六【501.二叉搜索树中的众数】

前言 二叉搜索树操作&#xff0c;继续。 记录 五十六【501.二叉搜索树中的众数】 一、题目阅读 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;…

【Socket编程】基于TCP协议实现客户端与服务端的通信

前言 由于TCP是面向连接的&#xff0c;所以在创建套接字之后还需要进入监听状态&#xff0c;监听状态下可以获取客户端的请求。获得请求之后&#xff0c;服务器需要接受连接&#xff0c;之后再处理事务。 实现服务端具体步骤 总的来说&#xff0c;TCP服务端主要实现以下步骤…

达梦数据库的系统视图v$dmwatcher

达梦数据库的系统视图v$dmwatcher 查询当前登录实例所对应的守护进程信息&#xff0c;注意一个守护进程可以同时守护多个组的实例&#xff0c;因此查询结果中部分字段&#xff08;N_GROUP、SWITCH_COUNT&#xff09;为守护进程的全局信息&#xff0c;并不是当前登录实例自身的…

0401-403组合逻辑电路的分析设计竞争冒险

组合逻辑电路的分析设计&竞争冒险 4.组合逻辑电路1.目录2.教学基本要求3.序 关于组合逻辑电路 4.1组合逻辑电路分析与设计一、组合逻辑电路分析二、组合逻辑电路的分析步骤&#xff1a;三、组合逻辑电路的分析举例例1 奇校验电路例2.对输入的二进制求反码例3.一个工厂发电的…

CSS 的环境变量函数env()

在CSS中&#xff0c;env() 函数并不是传统意义上的“环境变量”函数&#xff0c;如你在编程语言中可能遇到的那样。相反&#xff0c;env() 是CSS中的一个函数&#xff0c;它用于访问由宿主环境&#xff08;如浏览器&#xff09;提供给CSS的自定义属性&#xff08;也称为环境变量…

使用 PVE 自签 CA 证书签发新证书

前言 PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示. PVE 证书位置 官方文档: https://pve.proxmox.com/wiki/Pr…

服务攻防-框架安全(漏洞复现)

关闭靶场 sudo docker-compose down 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 运行dockers容器 docker exec -it 64052abd288b /bin/bash thinkphp框架 thinkphp 2 - rce漏洞复现 docker exec -it 731dbae0e0b5 /bin/bash 集成化工具扫描 可以命令…

Qt区分鼠标按下时移动的是哪个多边形

使用不同的鼠标事件处理器&#xff1a;为每个多边形分配不同的事件处理器&#xff0c;或者在同一个处理器中使用逻辑来区分。 检查鼠标点击位置&#xff1a;在鼠标按下事件中&#xff0c;检查鼠标的位置是否在某个多边形的边上或顶点上。 使用图形的标识符&#xff1a;给每个…

十五届蓝桥杯JAVA B组题目详解(持续更新中)

试题 B: 类斐波那契循环数 我发现蓝桥杯的题目现在就是要费时间去理解&#xff0c;所以还是审题很重要&#xff0c;这道题的思路就是&#xff0c;一个n位数的前n个数&#xff0c;都是对应的位数上的值&#xff0c;比如说12345&#xff0c;五位数是吧&#xff0c;那数列S的前五位…

phpstudy下载使用以及搭建本地SQL labs靶场

一&#xff0c;PHP study 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) 1&#xff0c;下载。 根据自己电脑系统下载对应的版本。 双击exe文件运行 选择下载目录&#xff08;路径不能有中文名&#xff09;。 2&#xff0c;使用。 启动阿帕奇和MySQ…

AI学习指南机器学习篇-自组织映射(Self-Organizing Maps,SOM)简介

AI学习指南机器学习篇-自组织映射&#xff08;Self-Organizing Maps&#xff0c;SOM&#xff09;简介 自组织映射&#xff08;Self-Organizing Maps&#xff0c;SOM&#xff09;是一种无监督学习算法&#xff0c;经常被用于降维、聚类和可视化高维数据。本篇博客将对SOM算法的…

数据库第二次作业

1.建立数据库 2.插入数据 3.完成查询 &#xff08;1&#xff09;、显示所有职工的基本信息。 &#xff08;2&#xff09;、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 &#xff08;3&#xff09;、求出所有职工的人数。 &#xff08;4&#xff09;、列…

FreeRTOS 信号量

信号量是操作系统中重要的一部分&#xff0c;信号量是任务间同步的一种机制&#xff0c;信号量可以用在多 任务访问同一资源时的资源管理。FreeRTOS 提供了多种信号量&#xff0c;按信号量的功能可分为二值信号量、计数型信号量、互斥信号量和递归互斥信号量。 使用信号量相关…

C#各种锁知识点

先上总结&#xff1a; 锁类型特点适用场景优点缺点自旋锁忙等待实现锁定&#xff0c;适合高并发短时间锁定高并发环境&#xff0c;短时间锁定&#xff0c;仅限单进程多线程同步开销低&#xff0c;避免线程上下文切换忙等待消耗CPU资源&#xff0c;不适合长时间锁定&#xff0…

组队学习——贝叶斯分类器

前言 本次数据继续沿用上一次主题的【组队学习——支持向量机-CSDN博客】 数据处理部分延续【组队学习——支持向量机】主题的处理办法对应划分训练集和验证集 模型选择 本次贝叶斯分类器模型的较多&#xff0c;常用的为高斯朴素贝叶斯分类器、多项式朴素贝叶斯分类器、伯努…

配置文件格式 XML 快速上手

文章目录 1.语法2.实例3.解析参考文献 XML&#xff08;Extensible Markup Language&#xff09;是可扩展标记语言&#xff0c;用来传输和存储数据。因为其允许用户自定义标记名称&#xff0c;具有自我描述性&#xff0c;可灵活地用于存储服务配置信息。 1.语法 XML 文档结构是…

JavaWeb总结

终于结束了JavaWeb的学习&#xff0c;个人感觉其实就是学习客户端与服务端交互的中间件&#xff0c;以及服务端处理的逻辑&#xff0c;来帮助我们构建整个项目的运转逻辑&#xff0c;从客户端到服务器再到客户端&#xff0c;核心是围绕着一系列的请求和响应如何处理&#xff0c…