首页 > 其他分享 >动态规划-二维费用问题——879.盈利计划

动态规划-二维费用问题——879.盈利计划

时间:2024-11-23 22:31:34浏览次数:11  
标签:879 int len 二维 vector 动态 dp size

1.题目解析

 题目来源

879.盈利计划——力扣

 测试用例

2.算法原理 

1.状态表示

2.状态转移方程

3.初始化

4.填表顺序

i下标从小到大即可,j与k下标不用特殊要求

5.返回值 

返回最后一个位置的dp值,即dp[group.size()][n][minProfit]

3.实战代码

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

代码解析 

4.代码优化(dp表降维) 

标签:879,int,len,二维,vector,动态,dp,size
From: https://blog.csdn.net/2301_80689220/article/details/143869616

相关文章

  • 动态规划-二维费用问题——474.一和零
    1.题目解析 题目来源474.一和零——力扣 测试用例2.算法原理1.状态表示本题是一个二维费用的问题,如果一开始直接使用二维dp表来表示比较困难,所以不妨直接使用三维dp表先来理解:dp[i][j][k]:在区间[1,i]上选择字符串,此时在字符0的总和不大于j且字符1的总和不......
  • YOLOv10改进,YOLOv10添加DynamicConv(动态卷积),CVPR2024,二次创新C2f结构
    摘要大规模视觉预训练显著提高了大规模视觉模型的性能。现有的低FLOPs模型无法从大规模预训练中受益。在本文中,作者提出了一种新的设计原则,称为ParameterNet,旨在通过最小化FLOPs的增加来增加大规模视觉预训练模型中的参数数量。利用DynamicConv动态卷积将额外的参......
  • 数据结构-链表、栈、动态数组、队列
    数据结构文章目录数据结构不透明指针定义优点应用场景不透明指针的实现定义不透明指针类型链表知识点节点(Node)头节点(Head)尾节点(Tail)单向链表双链表动态数组队列队列的链式存储队列的顺序存储栈栈的顺序存储栈的链式存储不透明指针定义不透明指针是指指向一个......
  • 动态规划(一)—— 基本工具(上)第一章节之动态规划的基础(上:一维)
    首先我们来想一想斐波那契数列,用递归实现?很显然,函数f(i)f(i)......
  • 动态规划(一)—— 基本工具(上)第一章节之动态规划的基础(下:多维)
    例题扩展及讲解T1n×mn\timesmn×m的方格(......
  • 使用ENSP实现DHCP+动态路由
    一、项目拓扑   二、项目实现 (1)路由器AR1配置进入系统试图sys将路由器命名为R1sysnameR1关闭信息中心undoinfo-centerenable进入g0/0/0接口intg0/0/0将g0/0/0接口IP地址配置为12.12.12.1/30ipaddress12.12.12.130退出此视图quit创建valn......
  • YOLOv11改进策略【Head】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进检测头, 优化
    一、本文介绍本文记录的是利用DynamicConv优化YOLOv11的目标检测网络模型。在大规模训练中,模型的参数量越多,FLOPs也越高,但在一些对计算资源有限制的场景下,需要低FLOPs的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOPs,因此Dynamic......
  • flutter 专题十二 Flutter Fair逻辑动态化架构设计与实现
    数据逻辑处理布局中的逻辑处理Flutter类型数据处理一、数据逻辑处理我们接触的每一个Flutter界面,大多由布局和逻辑相关的代码组成。如Flutter初始工程的CountingDemo的代码:class_MyHomePageStateextendsState<MyHomePage>{//变量int_counter=0;//......
  • 深圳大学-算法设计与分析-实验4-动态规划(鸡蛋掉落问题)
    前言说明一门没什么意义的课程,学算法不如直接刷题,这门课纯答辩,本人写的报告也很答辩,可能还有错误,仅供参考,慎抄!实验目的(1)掌握动态规划算法设计思想。(2)掌握鸡蛋坠落问题的动态规划解法。实验内容动态规划将问题划分为更小的子问题,通过子问题的最优解来重构原问题的最......
  • 动态 DP 学习笔记
    1前言动态DP,简称DDP。用于处理树上带修的简单DP问题。前置知识:树链剖分线段树维护矩阵树形DP2基本做法上模板题:P4719【模板】"动态DP"&动态树分治如果不带修,就是简单的树上DP。设\(f_{i,0}\)表示不选\(i\)点的最大权值,\(f_{i,1}\)表示选\(i\)点并且......