hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
生活随笔
收集整理的這篇文章主要介紹了
hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:https://vjudge.net/problem/HDU-2191
?
? ? ? ? ? ? ? ? ? 悼念512汶川大地震遇難同胞——珍惜現在,感恩生活
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Total Submission(s): 35693????Accepted Submission(s): 15054
為了挽救災區同胞的生命,心系災區同胞的你準備自己采購一些糧食支援災區,現在假設你一共有資金n元,而市場有m種大米,每種大米都是袋裝產品,其價格不等,并且只能整袋購買。
請問:你用有限的資金最多能采購多少公斤糧食呢?
Input 輸入數據首先包含一個正整數C,表示有C組測試用例,每組測試用例的第一行是兩個整數n和m(1<=n<=100, 1<=m<=100),分別表示經費的金額和大米的種類,然后是m行數據,每行包含3個數p,h和c(1<=p<=20,1<=h<=200,1<=c<=20),分別表示每袋的價格、每袋的重量以及對應種類大米的袋數。 Output 對于每組測試數據,請輸出能夠購買大米的最多重量,你可以假設經費買不光所有的大米,并且經費你可以不用完。每個實例的輸出占一行。 Sample Input 1 8 2 2 100 4 4 100 2 Sample Output 400 多重背包模板題 #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int main() {int t, p[105], w[105], c[105], dp[105];scanf("%d", &t);while (t--){int n, m, count = 0;scanf("%d %d", &n, &m);for (int i = 0; i<m; i++)scanf("%d %d %d", &p[i], &w[i], &c[i]);memset(dp, 0, sizeof(dp));int temp = 0;for (int i = 0; i<m; i++){for (int j = n; j >= p[i]; j--) {for (int k = 1; k <= c[i]; k++) //枚舉每個種類大米的個數 {if (j<k*p[i]) break;dp[j] = max(dp[j - k * p[i]] + k * w[i], dp[j]);}}}printf("%d\n", dp[n]);}return 0; } 2018-05-16
?
轉載于:https://www.cnblogs.com/00isok/p/9047884.html
總結
以上是生活随笔為你收集整理的hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串的切片
- 下一篇: Wix 安装部署教程(十六) -- 自动