打怪兽 (背包问题)

目录

题目描述

输入

输出

样例输入 复制

样例输出 复制

提示

代码


题目描述

凯莉王子开了一个魔法师小号来单挑怪兽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;
}

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值