蓝桥杯Java ABC组 AcWing P1022 宠物小精灵之收服

题目链接:

https://www.acwing.com/problem/content/description/1024/

#01背包

典型的二维 01 背包问题

但求"收服 C 个小精灵时皮卡丘的剩余最多体力值"时卡了一下

当时在想这二维费用怎么不平衡之类的,其实没有这么复杂

求出最大值后,就再遍历一遍,找出最小消耗的体力

代码

cpp 复制代码
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1010, M = 510;

int n, V1, V2;
int f[N][M];

int main()
{
    cin >> V1 >> V2 >> n;
    for (int i = 0; i < n; i ++ )
    {
        int v1, v2;
        cin >> v1 >> v2;
        for (int j = V1; j >= v1; j -- )
            for (int k = V2 - 1; k >= v2; k -- )
                f[j][k] = max(f[j][k], f[j - v1][k - v2] + 1);
    }

    cout << f[V1][V2 - 1] << ' ';
    int k = V2 - 1;
    while (k > 0 && f[V1][k - 1] == f[V1][V2 - 1]) k -- ;
    cout << V2 - k << endl;

    return 0;
}
相关推荐
唐青枫5 分钟前
Java MyBatis 实战指南:XML 映射、动态 SQL 与数据访问层设计
java·mybatis
码语智行5 分钟前
MQTT 配置、依赖与使用说明
java·物联网·mt
_日拱一卒6 分钟前
LeetCode:39组合总和
java·算法·leetcode·职场和发展
郝学胜-神的一滴8 分钟前
力扣 662 :二叉树最大宽度
java·数据结构·c++·python·算法·leetcode·职场和发展
仙俊红9 分钟前
反射到底解决什么问题?
java·开发语言
小森林之主11 分钟前
凌晨3点的闹钟:分布式定时任务设计实战
java·redis·任务调度·cron·分布式定时任务
yaoxin52112314 分钟前
430. Java 日期时间 API - 时间计算 Temporal 包
java·前端·python
星马梦缘26 分钟前
数据库 第十三章 未完结版本
java·网络·数据库
程序猿乐锅27 分钟前
【JAVASE | 第十六篇】多线程
java·开发语言
做个文艺程序员28 分钟前
第01篇:Redis 从入门到上手:核心数据结构与 Java Spring Boot 实战详解
java·redis数据结构·redis入门·redis教程·java集成redis