1. 程式人生 > >Piggy-Bank(復習完全背包)

Piggy-Bank(復習完全背包)

ssi color hdu spa http lan blog stream include

傳送門

題目大意:

有一個存錢的儲存罐,給你它存滿錢之前和之後的重量,和幾類硬幣的面值和重量。

求裝滿儲錢罐時最小能得到多少錢。

題解:完全背包變形。

因為要求最小 一開始賦值大數。

code:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int w1,w2,wi,t,k,f[10002],v[510],w[510];
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        memset(f,
0x3f,sizeof(f)); f[0]=0; //** scanf("%d%d",&w1,&w2); wi=w2-w1; scanf("%d",&k); for(int i=1;i<=k;i++) scanf("%d%d",&v[i],&w[i]); for(int i=1;i<=k;i++) for(int j=w[i];j<=wi;j++) f[j]=min(f[j],f[j-w[i]]+v[i]);
if(f[wi]==0x3f3f3f3f) printf("This is impossible.\n"); else printf("The minimum amount of money in the piggy-bank is %d.\n",f[wi]); } return 0; }

Piggy-Bank(復習完全背包)