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";
}
posted @ 2025-02-02 18:46  wh2011  阅读(17)  评论(0)    收藏  举报