uva 10465 Homer Simpson (完全背包)

来源:互联网 发布:java中getclass方法 编辑:程序博客网 时间:2024/04/29 05:39

uva 10465 Homer Simpson

题目大意:有两种汉堡,给出吃每种汉堡的时间,以及总时间。求出在充分利用时间的前提下,能吃的最多的汉堡数量。当无法利用所有时间时,再在汉堡数量后面输出剩余的时间。

解题思路:完全背包。

#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>typedef long long ll;using namespace std;ll dp[20005];int main() {    int num[2], sum;        while (scanf("%d %d %d", &num[0], &num[1], &sum) == 3) {        memset(dp, 0, sizeof(dp));        dp[0] = 1;        for (int i = 0; i < 2; i++) {            for (int j = 0; j <= sum; j++) {                if (dp[j] && dp[j + num[i]] < dp[j] + 1) {                    dp[j + num[i]] = dp[j] + 1;                }            }        }        int cnt = 0;        while (!dp[sum]) {            sum--;            cnt++;        }        printf("%lld", dp[sum] - 1);        if (cnt) printf(" %d", cnt);        printf("\n");    }    return 0;}
0 0
原创粉丝点击