AcWing 4551. 猪猪存钱罐
直接完全背包即可。
// #define FILE_INPUT
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define rep(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define per(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)
void Init();
void Solve();
signed main() {
cin.sync_with_stdio(0);
cin.tie(0), cout.tie(0);
#ifdef FILE_INPUT
freopen("input.in", "r", stdin);
#endif
int T = 1;
cin >> T;
while (T--) {
Init();
Solve();
}
return 0;
}
using LL = long long;
using ULL = unsigned long long;
const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;
const int N = 10010;
int n, m, f[N];
void Init() {
}
void Solve() {
cin >> n >> m;
m -= n;
cin >> n;
memset(f, 0x3f, sizeof(f));
f[0] = 0;
while (n--) {
int v, w; cin >> v >> w;
rep(i, w, m)
f[i] = min(f[i - w] + v, f[i]);
}
if (f[m] == Inf) cout << "This is impossible.";
else cout << "The minimum amount of money in the piggy-bank is " << f[m] << ".\n";
}

浙公网安备 33010602011771号