AcWing 1022. 宠物小精灵之收服(二维背包)

题目链接:点击这里

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

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;
const int N = 1010;

int f[N][N];

int main()
{
    int s, m, n;    //s小智的精灵球数量、m皮卡丘初始的体力值、n野生小精灵的数量
    scanf("%d%d%d", &s, &m, &n);
    
    for(int i = 1; i <= n; ++i)
    {
        int a, b;
        scanf("%d%d", &a, &b);
        
        for(int j = s; j >= a; --j)
        {
            for(int k = m - 1; k >= b; --k)//当皮卡丘的体力小于等于0时,小智就必须结束狩猎
            {
                f[j][k] = max(f[j][k], f[j-a][k-b] + 1);
            }
        }
    }
    
    printf("%d", f[s][m - 1]);
    
    int k = m - 1;
    while(k > 0 && f[s][k-1] == f[s][m - 1])    k--;
    
    printf(" %d", m - k);
    
    return 0;
}
发布了844 篇原创文章 · 获赞 135 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/104978824