这道题目本身很简单,倒推回去,第K个是最优时,K+1时必然包含它.所以就从最后面的股票开始贪心法用最优解生成最优解.
难点1是去重,我直接用了个价格表去过滤,如果多个价格相等的同级最优解,就用他们中可能性最大的那个累加,其余的忽略.
难点2是大数计算.可能性可能有几十位的数字,所以封装了一个大数类.现在还不支持符号,只支持正数.后面需要用到负数的时候再说.
题目:
Buy Lo...
分类:
其他好文 时间:
2014-08-10 12:59:00
阅读次数:
436
题目链接:http://poj.org/problem?id=2828
在一个队列中,一个人想要插队,告诉你每个新来的人会插在i个人后面,求出最后的队列。
如果我们用模拟的话,那么时间复杂度肯定是超了;想想,如果我们逆序,那么最后来的人的位置一定是固定的,这样的话,我们将问题转化成逆序扫描给出数据,插在i个人后面这个数据就变成了在这个人前面需要留出多少个空位。如此我们只需要用树状数组记录前n项...
分类:
其他好文 时间:
2014-08-10 10:29:30
阅读次数:
383
Buy TicketsTime Limit:4000MSMemory Limit:65536KTotal Submissions:13017Accepted:6449DescriptionRailway tickets were difficult to buy around the Lunar N...
分类:
其他好文 时间:
2014-08-09 15:36:48
阅读次数:
308
No limit to transaction count, so it is a recursive sum calculation. Take care of boundary condition.class Solution {public: int maxProfit(vector &...
分类:
其他好文 时间:
2014-08-08 15:58:06
阅读次数:
212
Also the very first problem on EPI.class Solution {public: int maxProfit(vector &prices) { size_t len = prices.size(); if (len = pric...
分类:
其他好文 时间:
2014-08-08 15:53:26
阅读次数:
170
题目分析:
给你N个人的队列,每个人都有想站的位置,要你从前往后的给他们排序,输出最后的结果。注意,后面的人会覆盖前面的。就是是原本在该位置上的人往后移动一个位置。
算法分析:
我们可以把总人数当作区间的大小,然后结果就是把区间的每一个位置都放上人,就是答案了。
而从题目中我们可以知道,后面的人是不受前面的人的影响的。所以,我们可以倒这来模拟过程。
如何模拟呢?我们可以想到...
分类:
其他好文 时间:
2014-08-08 12:49:05
阅读次数:
164
Buy TicketsTime Limit: 4000 MS Memory Limit: 65536 KB64-bit integer IO format: %I64d , %I64u Java class name: Main[Submit] [Status] [Discuss]Descripti...
分类:
其他好文 时间:
2014-08-08 12:13:15
阅读次数:
227
Buy TicketsTime Limit:4000MSMemory Limit:65536KTotal Submissions:12930Accepted:6412DescriptionRailway tickets were difficult to buy around the Lunar N...
分类:
其他好文 时间:
2014-08-07 12:59:20
阅读次数:
340