镇江做网站公司漳州本地企业网站建设服务

news/2025/10/5 18:02:21/文章来源:
镇江做网站公司,漳州本地企业网站建设服务,免费自助建站系统平台 贴吧,网站关键词 提醒作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode879. 盈利计划 集团里有 n 名员工#xff0c;他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润#xff0c;它要求 group[…作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode879. 盈利计划 集团里有 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 动态规划 动态规划的状态表示 pre[j][k]表示 从前i个工作中完成若干任务出动了j人利润为k的盈利计划数。例外kminProfit 时包括利润大于minProfit的盈利计划数。 动态规划的转移方程 前i个任务出动 preCount 人利润为p { d p [ p r e C o u n t ] [ p ] p r e [ p r e C o u n t ] [ p ] 不完成本任务 人数不足无法完成当前任务 p r e C o u n t g r o u p [ i ] n d p [ p r e C o u n t g r o u p [ i ] ] [ m i n ( m i n P r o f i t , p p r o f i t [ i ] ) ] p r e [ p r e C o u n t ] [ p ] 完成本任务 \begin{cases} dp[preCount][p] pre[preCount][p] 不完成本任务 \\ 人数不足无法完成当前任务 preCountgroup[i] n \\ dp[preCountgroup[i]][min(minProfit,pprofit[i])] pre[preCount][p] 完成本任务 \\ \end{cases} ⎩ ⎨ ⎧​dp[preCount][p]pre[preCount][p]人数不足无法完成当前任务dp[preCountgroup[i]][min(minProfit,pprofit[i])]pre[preCount][p]​不完成本任务preCountgroup[i]n完成本任务​ 动态规划的初始值 pre[0][0]1 动态规划的填表顺序 i从小到大 动态规划的返回值 ∑ i : 0 p r e . s i z e ( ) − 1 \sum\Large_{i:0 }^{pre.size()-1} ∑i:0pre.size()−1​v[i].back() 代码 核心代码 templateint MOD 1000000007 class C1097Int { public:C1097Int(long long llData 0) :m_iData(llData% MOD){}C1097Int operator(const C1097Int o)const{return C1097Int(((long long)m_iData o.m_iData) % MOD);}C1097Int operator(const C1097Int o){m_iData ((long long)m_iData o.m_iData) % MOD;return *this;}C1097Int operator-(const C1097Int o){m_iData (m_iData MOD - o.m_iData) % MOD;return *this;}C1097Int operator-(const C1097Int o){return C1097Int((m_iData MOD - o.m_iData) % MOD);}C1097Int operator*(const C1097Int o)const{return((long long)m_iData * o.m_iData) % MOD;}C1097Int operator*(const C1097Int o){m_iData ((long long)m_iData * o.m_iData) % MOD;return *this;}bool operator(const C1097Int o)const{return m_iData o.m_iData;}C1097Int pow(long long n)const{C1097Int iRet 1, iCur *this;while (n){if (n 1){iRet * iCur;}iCur * iCur;n 1;}return iRet;}C1097Int PowNegative1()const{return pow(MOD - 2);}int ToInt()const{return m_iData;} private:int m_iData 0;; };class Solution { public:int profitableSchemes(int n, int minProfit, vectorint group, vectorint profit) {vectorvectorC1097Int pre(n 1, vectorC1097Int(minProfit 1));pre[0][0] 1;for (int i 0; i group.size(); i){auto dp pre;//不完成当前任务for (int preCount 0; preCount n; preCount){for (int p 0; p minProfit; p){const int iNewCount preCount group[i];if (iNewCount n){continue;}const int iNewProfit min(minProfit, p profit[i]);dp[iNewCount][iNewProfit] pre[preCount][p];}}pre.swap(dp);}C1097Int biRet;for (const auto v : pre){biRet v.back();}return biRet.ToInt();} };测试用例 templateclass T void Assert(const T t1, const T t2) {assert(t1 t2); }templateclass T void Assert(const vectorT v1, const vectorT v2) {if (v1.size() ! v2.size()){assert(false);return;}for (int i 0; i v1.size(); i){Assert(v1[i], v2[i]);}}int main() { int n, minProfit;vectorint group, profit;{Solution sln;n 5, minProfit 3, group { 2, 2 }, profit { 2, 3 };auto res sln.profitableSchemes(n, minProfit, group, profit);Assert(res, 2);}{Solution sln;n 10, minProfit 5, group { 2, 3, 5 }, profit { 6, 7, 8 };auto res sln.profitableSchemes(n, minProfit, group, profit);Assert(res, 7);}}2023年 1月第一版 class CBigMath { public: static void AddAssignment(int* dst, const int iSrc) { *dst (dst iSrc) % s_iMod; } static void AddAssignment(int dst, const int iSrc, const int iSrc1) { *dst (*dst iSrc) % s_iMod; *dst (dst iSrc1) % s_iMod; } static void AddAssignment(int dst, const int iSrc, const int iSrc1, const int iSrc2) { *dst (*dst iSrc) % s_iMod; *dst (*dst iSrc1) % s_iMod; *dst (dst iSrc2) % s_iMod; } static void SubAssignment(int dst, const int iSrc) { *dst (s_iMod - iSrc *dst) % s_iMod; } static int Add(const int iAdd1, const int iAdd2) { return (iAdd1 iAdd2) % s_iMod; } static int Mul(const int i1, const int i2) { return((long long)i1 i2) % s_iMod; } private: static const int s_iMod 1000000007; }; class Solution { public: int profitableSchemes(int n, int minProfit, vector group, vector profit) { m_minProfit minProfit; vector pre((n 1)(minProfit 1)); pre[0] 1; int iMaxN 0; int iMaxProfit 0; for (int i 0; i group.size(); i) { vector dp pre; for (int j 0; j iMaxN; j) { for (int k 0; k iMaxProfit; k) { const int iNewN j group[i]; if (iNewN n) { //员工不足 continue; } const int iNewProfit min(minProfit, k profit[i]); CBigMath::AddAssignment(dp[GetIndex(iNewN, iNewProfit)], pre[GetIndex(j, k)]); } } pre.swap(dp); iMaxN min(n, iMaxN group[i]); iMaxProfit min(minProfit, iMaxProfit profit[i]); } int iNum 0; for (int i 0; i iMaxN; i) { CBigMath::AddAssignment(iNum ,pre[GetIndex(i, minProfit)]); } return iNum; } inline int GetIndex(int n, int pro) { return n *(m_minProfit 1) pro; } int m_minProfit; }; 2023年1月版 class CBigMath { public: static void AddAssignment(int* dst, const int iSrc) { *dst (dst iSrc) % s_iMod; } static void AddAssignment(int dst, const int iSrc, const int iSrc1) { *dst (*dst iSrc) % s_iMod; *dst (dst iSrc1) % s_iMod; } static void AddAssignment(int dst, const int iSrc, const int iSrc1, const int iSrc2) { *dst (*dst iSrc) % s_iMod; *dst (*dst iSrc1) % s_iMod; *dst (dst iSrc2) % s_iMod; } static void SubAssignment(int dst, const int iSrc) { *dst (s_iMod - iSrc *dst) % s_iMod; } static int Add(const int iAdd1, const int iAdd2) { return (iAdd1 iAdd2) % s_iMod; } static int Mul(const int i1, const int i2) { return((long long)i1 i2) % s_iMod; } private: static const int s_iMod 1000000007; }; class Solution { public: int profitableSchemes(int n, int minProfit, vector group, vector profit) { m_minProfit minProfit; vector pre((n 1)(minProfit 1)); pre[0] 1; int iMaxN 0; int iMaxProfit 0; for (int i 0; i group.size(); i) { vector dp pre; for (int j 0; j iMaxN; j) { for (int k 0; k iMaxProfit; k) { const int iNewN j group[i]; if (iNewN n) { //员工不足 continue; } const int iNewProfit min(minProfit, k profit[i]); CBigMath::AddAssignment(dp[GetIndex(iNewN, iNewProfit)], pre[GetIndex(j, k)]); } } pre.swap(dp); iMaxN min(n, iMaxN group[i]); iMaxProfit min(minProfit, iMaxProfit profit[i]); } int iNum 0; for (int i 0; i iMaxN; i) { CBigMath::AddAssignment(iNum ,pre[GetIndex(i, minProfit)]); } return iNum; } inline int GetIndex(int n, int pro) { return n *(m_minProfit 1) pro; } int m_minProfit; }; 扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快 速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关 下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 **C 17** 如无特殊说明本算法用**C**实现。

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

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

相关文章

用 Haxe 实现英文数字验证码识别

一、背景介绍 验证码(CAPTCHA)广泛用于区分人类与机器人,识别验证码通常依赖图像处理与 OCR 技术。本文将使用 Haxe 编程语言结合 Tesseract OCR 来实现英文数字验证码的识别。 Haxe 是一门跨平台语言,可以编译到多…

出题四

T1 T4tjT1 对于一次询问 \((x_1,y_1)\) 到 \((x_2,y_2)\),显然若两点不在同一个联通块中则无解。考虑在同一个联通块中的答案。 我们对整张图进行黑白染色。则有结论:若黑色/白色格点存在不同的数,则一定有解。 证明…

网站推广由什么样的人来做网站后台上次图片

本文作者:dpgisdpg前言参加一起Show桌面活动,顺便搞定之前未做的三星C49HG90DMC显示器开箱作业。搭建一套美如画的桌面,工程堪比“复仇者联盟”,不但需要足够的财力来买装备,还得会构图和互相搭配,打个比方…

网站设计公司深圳缩我短网址生成

1.开发背景 基于以上的章节,了解了 FreeRTOS 多线程间的信号量、队列的使用,已经满足了日常使用场景。其中,队列的使用规定了队伍成员的大小,然而现实使用场景下,很多数据不都是定长大小了,例如不定长的通讯…

二手图书交易网站建设辽宁移动惠生活app官方版

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

ios移动网站开发详解高端室内设计公司

活动介绍: 「数据仓库技术交流群」已经正式启动每日SQL打卡,帮助大家扎实基础,努力工作之余,别忘了自我提升。 欢迎报名和邀请小伙伴参与,一个人可能走得很快,但一群人会走得很远。 🍅题目汇总(…

实用指南:B站视频下载器 v1.0.4|免登录下载1080P视频

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

台州椒江做网站wordpress禁止搜索页面

队列定义 先进者先出,这就是典型的“队列”。队列跟栈一样,也是一种操作受限的线性表数据结构。 顺序队列和链式队列 顺序队列:用数组实现的队列// 用数组实现的队列 public class ArrayQueue {// 数组:items,数组大…

7 2025 07 15 模拟赛题解

2025 07 15 模拟赛题解 T1 水题一道,全场切 题面 请你判断是否存在正整数 \(n\),使得 \(n^2\) 是 k 的倍数,且 \(n\) 不是 \(k\) 的倍数。如果存在,则输出最小的 \(n\)。不存在则输出 \(−1\)。 \(1 \le k \le 10 …

路桥区商用营销型网站建设wordpress如何查看并修改源代码

SpringCloud Alibaba 常用组件 一、基础结构搭建1.父工程创建2.子工程创建 二、Nacos:注册中心1.服务端搭建2.注册中心-客户端搭建3.注册中心-管理页面4.注册中心-常用配置5.注册中心-核心功能总结 三、Nacos注册中心集成Load Balancer 、OpenFeign1.Nacos客户端集成…

使用 OCaml 实现验证码识别

一、背景介绍 验证码(CAPTCHA)是一种常见的人机验证方式,通常由随机生成的字母或数字组成。为了自动化识别验证码,我们可以结合 OCR 引擎 Tesseract 与编程语言进行处理。本文使用 OCaml 实现验证码识别。 二、技术…

资料中台(大材料平台)之数据仓库建设

资料中台(大材料平台)之数据仓库建设pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解

私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

建设网站注意什么wordpress表单数据前台显示图片

近年来,我国各类器材制造业已经开始向数字化生产转型,使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术,企业可以更好地监控生产线上的运行和质量情况,及时发现和解决问题,从而提高生产效率…

本地搭建多个网站wordpress文章阅读量

检索销量表中销量最好的商品id和销量,下列SQL语句正确的是() A. SELECT 商品id,销量 FROM 销量表 WHERE 销量MAX(销量) B. SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 销量 C. SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 商品id …

3g版网站制作wordpress分城市访问

临界区模式 Critical Section Pattern 是指在一个共享范围中只让一个线程执行的模式.它是所有其它多线程设计模式的基础,所以我首先来介绍它.把着眼点放在范围上,这个模式叫临界区模式,如果把作眼点放在执行的线程上,这个模式就叫单线程执行模式.首先我们来玩一个钻山洞的游戏,…

差分约束模板

洛谷模板测试七倍经验: https://www.luogu.com.cn/record/238785118 https://www.luogu.com.cn/record/238783283 https://www.luogu.com.cn/record/238788990 https://www.luogu.com.cn/record/238791631 https://ww…

第一篇:揭示模型上下文协议(MCP):AI的通用连接器 - 详解

第一篇:揭示模型上下文协议(MCP):AI的通用连接器 - 详解2025-10-05 17:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

17 LCA模拟赛1T2 剧院始于演员 题解

剧院始于演员 题面 有 \(n\) 个演员,共 \(m\) 场演出,每场演出会给出这场演出的演员名单,共 \(k_i\) 个姓名 对于每个演员,求最早在哪一场演出结束后能够确定其对应姓名? \(1 \le n , m \le 10^5, \sum k_i \le 1…

岳阳网站建设收费标准做货运网站找哪家好

k8s-集群部署1 一、基础环境准备二、docker环境准备三、k8s集群部署1.kubeadm创建集群2.使用kubeadm引导集群 总结 一、基础环境准备 首先,需要准备三个服务器实例,这里我使用了阿里云创建了三个实例,如果不想花钱,也可以在VM上创…