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 <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5
 6 const int maxn = 1e6 + 5;
 7
 8 typedef long long ll;
 9 int value[maxn], interest[maxn];
10 ll dp[maxn], ans, money, tolmoney;
11
12 int main()
13 {
14     int kind, tcase, year;
15     while (scanf("%d", &tcase) != EOF)
16     {
17         while (tcase--)
18         {
19             scanf("%lld%d", &money, &year);
20             scanf("%d", &kind);
21             for (int i = 0; i < kind; i++)
22             {
23                 scanf("%d%d", &value[i], &interest[i]);
24                 value[i] /= 1000;
25             }
26             memset(dp, 0, sizeof(dp));
27             ans = 0, tolmoney = money;
28             for (int j = 0; j < year; j++)
29             {
30                 if (j != 0)
31                     money = tolmoney;
32                 money /= 1000;
33                 for (int i = 0; i < kind; i++)
34                 {
35                     for (int k = value[i]; k <= money; k++)
36                     {
37                         dp[k] = max(dp[k], dp[k-value[i]] + interest[i]);
38                         ans = max(dp[k], ans);
39                     }
40                 }
41                 tolmoney += ans;
42             }
43             printf("%lld\n", tolmoney);
44         }
45     }
46     return 0;
47 }

hdu 1963 Investment 解题报告

时间: 2024-10-13 12:47:23

hdu 1963 Investment 解题报告的相关文章

hdu 1541 Stars 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541 题目意思:有 N 颗星星,每颗星星都有各自的等级.给出每颗星星的坐标(x, y),它的等级由所有比它低层(或者同层)的或者在它左手边的星星数决定.计算出每个等级(0 ~ n-1)的星星各有多少颗. 我只能说,题目换了一下就不会变通了,泪~~~~ 星星的分布是不是很像树状数组呢~~~没错,就是树状数组题来滴! 按照题目输入,当前星星与后面的星星没有关系.所以只要把 x 之前的横坐标加起来就可以了

Valentine&#39;s Day Round 1001.Ferries Wheel(hdu 5174)解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5174 题目意思:给出 n 个人坐的缆车值,假设有 k 个缆车,缆车值 A[i] 需要满足:A[i−1]<A[i]<A[i+1](1<i<K).现在要求的是,有多少人满足,(他坐的缆车的值 + 他左边缆车的值) % INT_MAX == 他右边缆车的值. 首先好感谢出题者的样例三,否则真的会坑下不少人.即同一部缆车可以坐多个人.由于缆车的值是唯一的,所以可以通过排序先排出缆车的位置.求出

hdu 超级楼梯 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 哦--对了,这些题读者可以直接忽略,我只是想练习一下自己薄弱的地方...... 题目意思我就不说了...自从昨晚问完乌冬兄一条DP题之后,“一体就知道系DP啦,而且仲好简单噶DP...”.就深感自己是如此地弱......可能有一段相当漫长的时间不会再找他了,毕竟一个喳喳对着一个区域赛银牌的人,自尊心作祟,而且,很大压力!我发现我好多不会......他好像以为我什么都会...... 这条题以前做

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 //多重背包 #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(in

背包 [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

BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: a,b.表示 process b 要在 process a 之前完成.问经过 m 种关系之后,有没有可能完成所有的 process. 可以利用拓扑排序的思想做.遍历所有 process,处理所有入度为 0 的点,然后把与该点关联的点,即度数都减一.这样处理完之后,每个点的度数应该都是-1,否则就代

Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b2, ...,  bt.需要满足两个条件(1)b1≤b2≤…≤bt   (2)b2−b1≤b3−b2≤?≤bt−bt−1.求出最大的 t 为多少. 遗留大半年的题目呀呀呀呀~~~~!!!首先非常感谢乌冬子大半年前的指点迷津,呕心沥血想了大半天举出个反例,以便指出我算法的错误.为了纪念这个伟大的人物(

hdu 1896.Stones 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1896 题目意思:给出 n 块石头的初始位置和能到达的距离.对于第奇数次遇到的石头才抛掷,偶数次的就忽略.问最多能扔到多远.如果有多颗石头在一个位置,距离小的那个标记为先遇到的. 所以先解说一下第二个测试案例: 2 1  5 6  6 在6这个位置的时候,由于5比6小,所以规定1(5)这个点是先遇上的,是偶数次遇到,所以忽略. 用优先队列做,位置近的优先级越高,如果位置相同,距离短的优先级越高. 1