hdu 1963 Investment 多重背包

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1963

//多重背包
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn = 1000000 + 10;
#define N 15
long long dp[maxn], ans;
int c[N], w[N], V;
void Pack(int C, int W)
{
    for(int i = C; i < maxn; i++)
        dp[i] = max(dp[i], dp[i-C]+W);
}
int main()
{
    int n, d, y;
    scanf("%d", &n);
    while(n--){
        scanf("%d%d", &V, &y);
        scanf("%d", &d);
        for(int i = 1; i <= d; i++){
            scanf("%d%d", &c[i], &w[i]);
            c[i] /= 1000;
        }
        memset(dp, 0, sizeof(dp));
        ans = V;
        V /= 1000;
        for(int i = 1; i <= d; i++)
            Pack(c[i], w[i]);
        while(y--)
            ans += dp[ans/1000];
        cout << ans << endl;
    }
    return 0;
}
时间: 2024-11-06 01:31:58

hdu 1963 Investment 多重背包的相关文章

hdu 1963 Investment 完全背包

hdu题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1963 poj题目链接:http://poj.org/problem?id=2063 完全背包 每过一年就重新做一次完全背包 注意到本钱非常大 不能直接暴力 看到基金的成本都是1000的倍数(注意它没说本钱什么的也是1000的倍数) 就要灵活对f[]进行处理了 最后一个问题是 f[]应该给多大 第一次我给了1010然后跪了 才发现只是说本金不超过一百万 注意到一个条件 利息不会超过10% 所以1

hdu 1963 Investment 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1963 题目意思:有 本金 money,还有一些股票的种类,第 i 种股票买入需要 value[i] 这么多钱,相应会有一定的利息interest[i],问经过若干年 year 后,每年都以最优的方案投资,总的资金有多少? 完全背包题,不过要看清楚 这句话:The value of a bond is always a multiple of $1 000,否则TLE了 1 #include <ios

HDU 1059 Dividing(多重背包)

HDU 1059 Dividing(多重背包) http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意: 现在有价值为1,2,3,4,5,6的6种物品, 它们的数量为num[i]( 1<=i<=6 )个. 现在要问的是能否把所有的的物品分成两份且这两份物品的价值总和相同 ? 分析: 首先我们求出所有物品的价值和sum_val, 如果sum_val是奇数, 那么明显不能分. 那么sum_val为偶时, 我们令m=sum_val/2. 我能只要看看从所有

hdu 2191(多重背包)

悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14758    Accepted Submission(s): 6229 Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市

背包 [HDU 1963] Investment

由于HDU上这个题目显示有问题,不好复制,所以从虚拟OJ上复制了 Investment Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Description John never knew he had a grand-uncle, until he received the notary??s letter. He learned that his late grand-uncle had

杭电1171 Big Event in HDU(母函数+多重背包解法)

Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 23728    Accepted Submission(s): 8363 Problem Description Nowadays, we all know that Computer College is the biggest department

HDU 1059(多重背包加二进制优化)

http://acm.hdu.edu.cn/showproblem.php?pid=1059 Dividing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29901    Accepted Submission(s): 8501 Problem Description Marsha and Bill own a collection

hdu(1059) Dividing(多重背包)

题意:输入六个数,价值分别为1——6,输入的数代表该价值的物品的个数:求能否平均分. key:如果奇数肯定不能分,直接输出答案.偶数的话,就是多重背包问题. 试过两种做法,第一种是背包九讲的二进制优化,写三个函数,分别是bag01, bagall, bagmulti~第二种是直接多重背包,但很可能tle,这题我交的就是tle了~ #include <iostream> #include <algorithm> #include <string.h> #include &

HDu -2844 Coins多重背包

这道题是典型的多重背包的题目,也是最基础的多重背包的题目 题目大意:给定n和m, 其中n为有多少中钱币, m为背包的容量,让你求出在1 - m 之间有多少种价钱的组合,由于这道题价值和重量相等,所以就是dp[i] = i, 其中dp[i]表示当前背包容量为i 的时候背包能装的价值. 题目思路: 模板 二进制优化 话说那个二进制真的很奇妙,只需要2的1次方 到 2的k-1次方, 到最后在加上一项当前项的个数 - 2 的k次方 + 1,也就是这些系数分别为1; 2; 22 .....2k-1;Mi