输入
第一行两个整数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;
}