您的位置:首页 > 其它

专题三 Problem R

2016-05-31 20:46 295 查看
一、题目编号:

          1018
二、简单题意:

       不知道存钱罐里面有多少钱,知道存钱罐的重量和各类钱币的重量,求出存钱罐里面最少有多少钱。
三、解题思路形成过程

       完全背包的变形。。

四、感想

        感觉这种题就是套公式。。另外,要注意输出结果细节问题!
五、AC代码

#include<iostream>

#include<stdio.h>

#include<string.h>

#define MAXF 0x7ffffff

using namespace std;

int dp[10001];

int main()

{

    int w1,w2,p,w,t,n;

    cin>>t;

    while(t--)

    {

        cin>>w1>>w2;

        cin>>n;

        for(int i=1;i<=w2-w1;i++)

           dp[i]=MAXF;//初始化为无穷大

        dp[0]=0;

        while(n--)

        {

            cin>>p>>w;

            for(int i=w;i<=w2-w1;i++)

                if(dp[i]>dp[i-w]+p)

                   dp[i]=dp[i-w]+p;

        }

        if(dp[w2-w1]==MAXF)

            printf("This is impossible.\n");

        else

            printf("The minimum amount of money in the piggy-bank is %d.\n",dp[w2-w1]);

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: