UVa 11900 - Boiled Eggs

来源:互联网 发布:在淘宝某店被限制购买 编辑:程序博客网 时间:2024/05/16 06:43

題目:用微波爐煮雞蛋,給你每個雞蛋的重量,微波爐能放的雞蛋個數和總重有限制,

            問最多能煮幾個雞蛋。

分析:dp,01背包。赤果果給的01背包。

            設計狀態:f(n)為總質量為n時,最大的雞蛋個數;

            狀態轉移:f(i)=max(f(i-m[j])+1,f(i-1));

說明:╮(╯▽╰)╭。

#include <cstring>#include <cstdio>int dp[303],m[33];int main(){int T, n, P, Q;while (~scanf("%d",&T))for (int t = 1; t <= T; ++ t) {scanf("%d%d%d",&n,&P,&Q);for (int i = 0; i < n; ++ i)scanf("%d",&m[i]);memset(dp, 0, sizeof(dp));for (int i = 0; i < n; ++ i)for (int j = Q; j >= m[i]; -- j)if (dp[j] < dp[j-m[i]]+1)dp[j] = dp[j-m[i]]+1;if (dp[Q] > P)dp[Q] = P;printf("Case %d: %d\n",t,dp[Q]);}    return 0;}


0 0
原创粉丝点击