[HDU-1114]Piggy-Bank

来源:互联网 发布:金十数据直播间 编辑:程序博客网 时间:2024/06/05 14:24

完全背包


#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const  int maxn = 10000 + 22;const int inf = 0x3f3f3f3f;int p[maxn], w[maxn];int dp[maxn];int main() {int T;cin >> T;while (T--) {        memset( dp, 0, sizeof(dp) );int E, F;cin >> E >> F;int maxW = F - E;        for(int j=0; j<=maxW; ++j) {            dp[j] = inf;        }        dp[0] = 0;int N;cin >> N;for (int i = 0; i < N; ++i) {cin >> p[i] >> w[i];}for (int i = 0; i < N; ++i) {for (int j = w[i]; j <= maxW; ++j) {                if( dp[j-w[i]] != inf && j-w[i]>=0 ) {                    dp[j] = min( dp[j], dp[j-w[i]]+p[i] );                }}}if( dp[maxW] == inf ) {            cout << "This is impossible." << endl;}else {            cout << "The minimum amount of money in the piggy-bank is "            << dp[maxW] << '.' << endl;}}return 0;}