#P1952. BUY LOW, BUY LOWER
BUY LOW, BUY LOWER
题目描述:
在牛市中,“逢低买入” 这条建议只是成功公式的一半。要想成为一名伟大的投资者,你还必须遵循这个问题所给出的建议:“逢低买入;在更低点买入”
每次你购买股票时,都必须以比上一次购买时更低的价格买入。你以比之前更低的价格买入的次数越多,那就越好!你的目标是看看你能够连续以越来越低的价格购买多少次。
你会得到一只股票在一段时间内每天的卖出价格(正的 位整数)。你可以选择在任何一天购买股票。每次你选择购买时,价格必须严格低于你上一次购买股票时的价格。编写一个程序,确定你应该在哪些天购买股票,以便使你购买的次数最大化。
以下是一份股票价格列表:
Day: 1 2 3 4 5 6 7 8 9 10 11 12
Price: 68 69 54 64 68 64 70 67 78 62 98 87
(至少就这个问题而言)最厉害的投资者,如果每次购买的价格都比上一次更低,最多可以购买四次。一个符合要求的四天购买序列(可能还有其他序列)是:
Day: 2 5 6 10
Price: 69 68 64 62
输入:
第一行:(),即给出股票价格的天数。
第二行及后续行:一系列由空格分隔的 个整数,除了最后一行可能整数数量较少外,其余每行有 个整数。
输出:
在一行中输出两个整数:
第一个整数表示价格递减的最长序列的长度
第二个整数表示具有该长度的序列的数量(保证可以用 位整数表示)
在统计解决方案的数量时,如果两个潜在的解决方案重复了相同的递减价格字符串,也就是说,当比较连续的价格时它们 “看起来一样”,那么这两个解决方案会被视为相同的(并且只会算作一个解决方案)。因此,两个不同的 “购买” 日期序列可能会产生相同的递减价格字符串,而这种情况只会被算作一个解决方案。
输入数据1
12
68 69 54 64 68 64 70 67 78 62
98 87
输出数据1
4 2
来源:
美国计算机奥林匹克竞赛(USACO)2002 年 2 月赛