您的位置:首页 > 健康 > 美食 > 打怪兽 (背包问题)

打怪兽 (背包问题)

2025/4/8 4:42:03 来源:https://blog.csdn.net/2301_76709357/article/details/141174421  浏览:    关键词:打怪兽 (背包问题)

目录

题目描述

输入

输出

样例输入 复制

样例输出 复制

提示

代码


题目描述

凯莉王子开了一个魔法师小号来单挑怪兽boss。

怪兽boss的血量为H。

凯莉王子一共会N种魔法,其中第i种魔法需要花费Bi的魔力,能对怪兽boss造成Ai的伤害,每种魔法都可以使用无数次。

请问至少需要多少魔力,才能击杀怪兽boss。

输入

第一行两个整数H,N(1≤H≤104,1≤N≤103)。

接下来N行,每行两个整数Ai,Bi(1≤Ai,Bi≤104)。

输出

一行一个整数,表示至少需要多少魔力。

样例输入
9 3
8 3
4 2
2 1
样例输出
4
提示

样例输入2

100 6

1 1

2 3

3 9

4 27

5 81

6 243

样例输出2

100

样例输入3

9999 10

540 7550

691 9680

700 9790

510 7150

415 5818

551 7712

587 8227

619 8671

588 8228

176 2461

样例输出3

139815

提示

第一组样例对怪兽boss分别使用1,3法术各一次即可。

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll h,n,mi=2e9,f[110000],i,x,y,j;
main() {
    cin >> h >> n;
    memset(f,127,sizeof(f));
    f[0]=0;
    for (i=1; i<=n; i++) {
        cin >> x >> y;
        for (j=x; j<=100000; j++)
            f[j]=min (f[j] , f[j-x]+y);
    }
    for (i=h; i<=100000; i++)
        mi=min(mi,f[i]);
    cout << mi;
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll h,n,mi=2e9,f[110000],i,x,y,j;
main() {cin >> h >> n;memset(f,127,sizeof(f));f[0]=0;for (i=1; i<=n; i++) {cin >> x >> y;for (j=x; j<=100000; j++)f[j]=min (f[j] , f[j-x]+y);}for (i=h; i<=100000; i++)mi=min(mi,f[i]);cout << mi;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com