Description
Solutions
考虑使用 完全背包DP 来解题。
由于每天可以无限次交易,那么我们每一天都可以先把之前买进的全部卖出,再按最优方案购进。
我们可以通过下面这个例子来理解这种做法:
编号\天数 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1号 | 10 | 20 | 30 | 10 |
1号第一天买入,第三天卖出明显是最优方案,利润为 20 x ( x 表 示 个 数 ) 20x(x表示个数) 20x(x表示个数) ,我们以刚刚说的方法做。
假设第一天拥有 100 金币。
天数 | 买入个数 | 卖出个数 | 拥有的金币和物品的总价值 |
---|---|---|---|
1 | 10 | 0 | 100 |
2 | 10 | 10 | 200 |
3 | 0 | 10 | 300 |
所以说明中途进行买卖是不会影响最优方案的。
但有些东西在中途需要进行买卖,那么我们就卖出后再算出当天最优方案,再购进当天的纪念品。
那怎么计算每天的最优方案呢?
要想赚得最多,最优方案肯定会满足以下条件:
1 | 购进的物品下一天会盈利。 |
---|---|
2 | 购进的物品的利润(下一天价格比该天的高出的部分)相对较高但价格会相对较低 |
3 | 持有的金钱基本都会被花掉,用于买满足第一条条件的物品上,故最后剩下来的钱会比满足第一条条件的物品的当天价格都要小。 |
综上所述,最优方案可以用完全背包求。