IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> AcWing 1022. 宠物小精灵之收服(二维费用的01背包问题) -> 正文阅读

[数据结构与算法]AcWing 1022. 宠物小精灵之收服(二维费用的01背包问题)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题意:

QQ截图20220307214109.png

思路:

本题是一道 01背包 的扩展题 —— 二维费用01背包问题,其本质和经典01背包没有区别

野生小精灵 看做 物品,则将捕捉需要的 精灵球个数 定为 第一费用皮卡丘要消耗的体力 定为 第二费用

最后答案要求物品数量最多,因此我们可以用状态的属性来表示选择的物品数

以上就是本题的 阅读理解 分析部分 ,接下来上 闫氏DP分析法:

55909_7844bea6d1-IMG_C0D309FBA487-1.jpeg

上图展示的是三维朴素,我们用代码实现的时候将省去第一维(野生小精灵数量),类比最经典的01背包问题

注意,题目提到:

  • ①使得皮卡丘体力小于等于0的野生小精灵也不会被小智收服,因此皮卡丘的体力值需在m - 1时开始

  • ②如果可以收服的小精灵数量一样,小智希望皮卡丘受到的伤害越小(剩余体力越大),因此在最后还需要从小到大遍历f[n][i](i = 0,1,...,m-1),当初次与f[n][m-1]相等时即受到的伤害最小,即剩皮卡丘余体力最大

时间复杂度:

O(KNM)

代码:

#include<bits/stdc++.h>

using namespace std;

int n, m, k;
const int N = 1010, M = 510;
int dp[N][M];

int main()
{
    cin>>n>>m>>k;//精灵球数量、皮卡丘初始的体力值、野生小精灵的数量
    for(int i=1;i<=k;++i)
    {
        int v1, v2;
        cin>>v1>>v2;
        //j,k二维费用,分别为 消耗精灵球数 和 皮卡丘消耗体力数
        for(int j=n;j>=v1;--j)
            for(int l=m-1;l>=v2;--l)//皮卡丘的体力值需在m - 1时开始,原因如上
            dp[j][l] = max(dp[j][l], dp[j-v1][l-v2]+1);
    }
    cout<<dp[n][m-1]<<' ';
    
    int ans = 0;
    //从小到大循环精灵对皮卡丘造成的伤害
    for(int i=0;i<=m-1;++i) if(dp[n][i]==dp[n][m-1]) {ans = i; break;}
    cout<<m-ans<<endl;//跳出循环时ans为最小伤害值,m-ans即为皮卡丘的剩余体力值的最大值
    
    return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:48:16  更:2022-03-08 22:49:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:56:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码