1. 程式人生 > >hdu1114 Piggy-Bank(完全揹包)

hdu1114 Piggy-Bank(完全揹包)

題意:存錢罐可以往裡面放一些價值小的錢,但是時間久了就不知道里面有多少錢了,除非你打破它。現在給出空罐子的重量和最滿能裝到多重,然後給出每種硬幣的價值和重量,我們要在不打破它的情況下確認罐子裡最少有多少錢。

思路:很貼近生活。每種硬幣數量不限,所以是完全揹包。條件必須在裝滿的情況下,求最小价值,那麼初始化變為裝滿的情況(揹包九講)和max變為min。如果遍歷完物品後滿容量的dp值沒有被改變則說明這些硬幣無法組成這個容量。由於資料10000,所以就不用二維的了。

#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
#include <iostream>

using namespace std;

typedef long long LL;

const int N = 10005;
const int INF = 0x3f3f3f3f;

int dp[N];

int main()
{
  //  freopen("in.txt", "r", stdin);
    int t, V, n, emp, fil;
    int cost[N], weight[N];
    scanf("%d", &t);
    while(t--)
    {
        scanf("%d%d", &emp, &fil);
        scanf("%d", &n);//物品數量
        for(int i = 1; i <= n; i++)
            scanf("%d%d", &weight[i], &cost[i]);
        V = fil-emp;
        dp[0] = 0;//裝滿
        for(int i = 1; i <= V; i++)
            dp[i] = INF;
        for(int i = 1; i <= n; i++)
            for(int j = cost[i]; j <= V; j++)
            {
                dp[j] = min(dp[j], dp[j-cost[i]]+weight[i]);
            }
    /*    for(int i = 0; i <= V; i++)
            printf("%d ", dp[i]);
        printf("\n");*/
        if(dp[V] == INF) printf("This is impossible.\n");
        else printf("The minimum amount of money in the piggy-bank is %d.\n", dp[V]);
    }
    return 0;
}


相關推薦

hdu1114 Piggy-Bank完全揹包

題意:存錢罐可以往裡面放一些價值小的錢,但是時間久了就不知道里面有多少錢了,除非你打破它。現在給出空罐子的重量和最滿能裝到多重,然後給出每種硬幣的價值和重量,我們要在不打破它的情況下確認罐子裡最少

HDU 1114 Piggy-Bank完全揹包

The input consists of T test cases. The number of them (T) is given on the first line of the input file. Each test case begins with a line containing two i

HDU 1114 Piggy-Bank完全背包

ask style span ica ace eno eterm ++ empty 題目: Before ACM can do anything, a budget must be prepared and the necessary financial support o

HDU1114 Piggy-Bank —— DP 完全背包

sum tar pla con pie anything algo earch aps 題目鏈接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1114 Piggy-Bank Time Limit: 2000/1000

hdu-2159完全揹包

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:完全揹包,但有次數的限制,因此,對次數進行dp,判斷次數是否超限。 #include<iostream> #include<cstdio> #include<c

HDU 1248 - 寒冰王座完全揹包

題目連結 http://acm.hdu.edu.cn/showproblem.php?pid=1248 【題目描述】 不死族的巫妖王發工資拉,死亡騎士拿到一張N元的鈔票(記住,只有一張鈔票),為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前. 死亡騎士:

洛谷2918 買乾草完全揹包

傳送門 【題目分析】 我會說NOIP考前一天現學揹包這種大實話嗎 一眼揹包的型別,因為無限多所以是完全揹包問題,注意最小值不一定在dp[m],但也不會超過dp[m+5000],所以直接列舉一下即可。 【程式碼~】 #include<bits/stdc++.h> usi

1003度度熊與邪惡大魔王完全揹包

1003度度熊與邪惡大魔王 Accepts: 1503 Submissions: 9026 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Descrip

p1273 質數和分解完全揹包

題目 https://www.luogu.org/problemnew/show/P2563 題解 1.碼出素數表, 2.接下來是重點,重點,重點!!! 重要的事情說三遍 很多人不知道狀態轉移方程f[j]+=f[j-prime[i]]的意義 可以這麼理解,一個數要拆成若干素數

p1279 過河完全揹包

題目 https://www.luogu.org/problemnew/show/P2904 程式碼 #include<bits/stdc++.h> using namespace std; inline int read() { int f=1,num=0;

UVA 147 Dollars 完全揹包

#include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #def

Piggy-Bank完全揹包

在 ACM 能夠開展之前,必須準備預算,並獲得必要的財力支援。該活動的主要收入來自於 Irreversibly Bound Money (IBM)。思路很簡單。任何時候,某位 ACM 會員有少量的錢時,他將所有的硬幣投入到小豬儲錢罐中。這個過程不可逆,因為只有把小豬儲錢罐打碎

UVA 674 Coin Change 完全揹包

解法 dp表示目前的種數,要全部裝滿所以f[0]=1其餘為0的初始化是必不可少的 程式碼 #include <bits/stdc++.h> using namespace std; int t; int v[]={1,5,10,25,50}; int dp[10000]; void DP()

詳解_動態規劃DAG_硬幣找零問題完全揹包

寫了好多結果一下卡住都沒了。。。(csdn怕是把大部分伺服器資源用在了廣告投放上吧) 參考數目:演算法競賽入門經典(第二版) NYOJ 995: 描述 在現實生活中,我們經常遇到硬幣找零的問題,例如,在發工資時,財務人員就需要計算最少的找零硬幣數,以便他們能從銀行拿回

2017百度之星資格賽 1003 度度熊與邪惡大魔王完全揹包

度度熊為了拯救可愛的公主,於是與邪惡大魔王戰鬥起來。 邪惡大魔王的麾下有n個怪獸,每個怪獸有a[i]的生命值,以及b[i]的防禦力。 度度熊一共擁有m種攻擊方式,第i種攻擊方式,需要消耗k[i]的晶石,造成p[i]點傷害。 當然,如果度度熊使用第i個技能打在第j個怪獸上面的話,會使得第j個怪獸的生命值減少p

2017百度之星-1003-度度熊與邪惡大魔王完全揹包

度度熊為了拯救可愛的公主,於是與邪惡大魔王戰鬥起來。 邪惡大魔王的麾下有n個怪獸,每個怪獸有a[i]的生命值,以及b[i]的防禦力。 度度熊一共擁有m種攻擊方式,第i種攻擊方式,需要消耗k[i]的晶石,造成p[i]點傷害。 當然,如果度度熊使用第i個技能打在第j個怪獸上面的話,會使得第j個怪獸的生命值減少p

ZOJ3623 Battle Ships 完全揹包

Battle Ships Time Limit: 2 Seconds      Memory Limit: 65536 KB Battle Ships is a new game which is similar to Star Craft. In this game

杭電ACM1114完全揹包

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1114 題目大意:有一個存錢罐,給出它的重量和裝滿硬幣的重量,然後給出裡面裝的硬幣的種類數,並給出每種硬

HDOJ 1176 免費餡餅完全揹包

免費餡餅 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 17   Accepted Submission(s)

每日三題-Day2-BHDU 1114 Piggy-Bank 完全揹包

原題地址 Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24047 Accepted S