POJ 2063 Investment

POJ 2063 Investment 完全背包

fakeDescription: 吃土魔法少女经济不景气辣! 变出借来了为1000的倍数的钱打算去投资股票辣! (顺便吃土少女说她最多只能借来1000000元)告诉你吃土少女将会吃土投资几年以及每种股票的年收益和每一股的价格 现在吃土少女任命你为投资顾问制定每年的投资方案最大化收益。吃土少女不关心你怎么买的。只需要你写个程序告诉她她最后持有多少财富。吃土少女等着你来拯救!

以上题目描述都是我口胡的。233.不过意思对了就行了233

由于每年有一次可以选择买卖股票的机会, 我们可以看做每年dp一下当年的最优计划。

然后我们可以用f[i][j]表示枚举到第i种股票时你手里还有j的可用资金时的最大财富

于是转换方程就出来辣:

f[i][j] = max(f[i - 1][j], f[i - 1][j - cost[i]] + val[i]);

其中cost是每一股的价格 val是年收益。

然后看到都是1000的倍数啦,除以1000优化一下空间和时间辣

所以核心伪代码:

for y = 1 to total year{
    tmp资金 = 去年结余 / 1000;
    for i = 1 to n
        for j = cost[i] to tmp资金
             //方程!QAQ
    总财富 += f[tmp资金];
}

然后输出总财富就好啦

注意一定要滚动数组优化一下不然容易MLE

 1 #include <iostream>
 2 #include <string.h>
 3 #include <math.h>
 4 #include <stdlib.h>
 5 #include <stdio.h>
 6 #include <algorithm>
 7 #define ll long long
 8 using namespace std;
 9 const int MAXN = 100010;
10 int f[MAXN], cost[15], val[15], cs;
11 int n, init, year, mon;
12 int main()
13 {
14     scanf("%d", &cs);
15     while(cs --){
16         scanf("%d%d%d", &init, &year, &n);
17         mon = init; init /= 1000;
18         for(int i = 1; i <= n; i ++) {
19             scanf("%d%d", &cost[i], &val[i]);
20             cost[i] /= 1000;
21         }
22         for(int y = 1; y <= year; y ++){
23             int tmp = mon / 1000;
24             memset(f, 0, sizeof(f));
25             for(int i = 1; i <= n; i ++){
26                 for(int j = cost[i]; j <= tmp; j ++){
27                     f[j] = max(f[j - cost[i]] + val[i], f[j]);
28                 }
29             }
30             mon += f[tmp];
31         }
32         printf("%d\n", mon);
33     }
34     return 0;
35 }

NAILED IT !

-------------------------------

吃土少女对您表示由衷的感谢!

时间: 2024-10-17 10:35:14

POJ 2063 Investment的相关文章

POJ 2063 Investment (完全背包)

A - Investment Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2063 Description John never knew he had a grand-uncle, until he received the notary's letter. He learned that his late grand-uncle

POJ 2063 Investment 完全背包

题目链接:http://poj.org/problem?id=2063 今天果然是卡题的一天.白天被hdu那道01背包的变形卡到现在还没想通就不说了,然后晚上又被这道有个不大也不小的坑的完全背包卡了好久.这题主要是说让你选择不同的债券(每种债券的费用和年利率的属性),然后n年后使得本金最大,如果仅仅是问一年的话就是个裸完全背包的题了,不过它是n年,每年得到的总利息都会加入到本金中变为下一年的本金,知道了这个后就很好处理了,在这道题里每年变化的本金就是背包容量,然后债券那两个属性就是物品的费用(o

[POJ 2063] Investment (动态规划)

题目链接:http://poj.org/problem?id=2063 题意:银行每年提供d种债券,每种债券需要付出p[i]块钱,然后一年的收入是v[i],到期后我们把本金+收入取出来作为下一年度本金继续购买债券. 问你起始本金为n元,m年后你手里最多能有多少钱. 其实这题不难..我却想了一会.. 因为题目保证了p[i]是1000的倍数,所以我们可以把本金和p[i]都先除以1000,然后算出每年可能获得的最大收入,然后加到本金当中,在暴力枚举m年就行了. 设计状态dp[j]代表我花了不超过j元钱

poj 2063 基础完全背包

这是一题基础的完全背包,适合初学者来理解完全背包 题意:有 n 种债券可以买 ,  每种债券的价格为 w , 每一年的收益为 p , 给你 wi 块钱 , 和 years 年的时间 , 我们最大的收益是是多少? 因为 , 每种债券可以买任意多个 , 所以这是一个简单的完全背包,但是由于基数(体积)太大 , 所以需要优化一下 : 由题意我们知道 , 每种债券的价格都是 1000 的倍数 , 那么我们就让每种债券的价格都 除以 1000 , 并且把 p 也除以 1000 , 这样就MTE , 也不会

poj 2063 Investmen 完全背包

这个题的想法不难,两个点: 1 是完全背包 2 是考虑/1000,降低复杂度 但是提交的时候反复的wa,最后找问题原来是dp开小了,可是dp本来开1005,后来开到100030过了.哎,如果没有时间计算 dp的长度的话,就往大了开,血的教训. Investment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10087   Accepted: 3539 Description John never knew he ha

POJ 2063 完全背包

Sample Input 1 10000 4 2 4000 400 3000 250 Sample Output 14050 题意: 给你本金 m 和年限 n ,以及 d 种债券(购买一年后就可以卖出)的花费及收益(卖出后的净利润) 在 d 种债券中不限制地购买(如果钱够) 问 n 年后的最大收益(含本金) m <= 1000000n <= 40d <= 10 题目中给出了两个关键的信息 : 债券的花费是1000的倍数,利率不超过10%因为花费是1000的倍数,所以可以将dp的复杂度降低

poj 动态规划题目列表及总结

此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276,1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈),1742, 1887, 1926(马尔科夫矩阵,求平衡), 1936, 1952, 1953, 1958, 1959, 1962, 1975,

[转] POJ DP问题

列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018, 2029, 2039, 2063, 20

DP题目列表/弟屁专题

声明: 1.这份列表不是我原创的,放到这里便于自己浏览和查找题目. ※最近更新:Poj斜率优化题目 1180,2018,3709 列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 195