和音量调节有些类似,具体又有点说不出来,都要最后在一个范围里找到他们的极值。
注意数据范围,有一个坑
至少H磅干草
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N = 200, M = 2e5 + 10;
int p[N],c[N];
int f[M];
int n,h;
int main(){
cin >> n >> h;
for(int i = 1; i <= n; i++){
cin >> p[i] >> c[i];
}
memset(f,0x3f,sizeof(f));
f[0] = 0;
for(int i = 1; i <= n; i++){
for(int j = p[i]; j <= h + 50000; j++){
f[j] = min(f[j],f[j - p[i]] + c[i]);
}
}
int ans = 0x3f3f3f3f;
for(int i = h; i <= h + 50000; i++){
ans = min(ans,f[i]);
}
cout << ans << endl;
return 0;
}