302065: CF391F1. Stock Trading
Memory Limit:256 MB
Time Limit:3 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Stock Trading
题目描述
This problem consists of three subproblems: for solving subproblem F1 you will receive 8 points, for solving subproblem F2 you will receive 15 points, and for solving subproblem F3 you will receive 10 points. Manao has developed a model to predict the stock price of a company over the next $ n $ days and wants to design a profit-maximizing trading algorithm to make use of these predictions. Unfortunately, Manao's trading account has the following restrictions: - It only allows owning either zero or one shares of stock at a time; - It only allows buying or selling a share of this stock once per day; - It allows a maximum of $ k $ buy orders over the next $ n $ days; For the purposes of this problem, we define a trade to a be the act of buying one share of stock on day $ i $ , then holding the stock until some day $ j>i $ at which point the share is sold. To restate the above constraints, Manao is permitted to make at most $ k $ non-overlapping trades during the course of an $ n $ -day trading period for which Manao's model has predictions about the stock price. Even though these restrictions limit the amount of profit Manao can make compared to what would be achievable with an unlimited number of trades or the ability to hold more than one share at a time, Manao still has the potential to make a lot of money because Manao's model perfectly predicts the daily price of the stock. For example, using this model, Manao could wait until the price is low, then buy one share and hold until the price reaches a high value, then sell for a profit, and repeat this process up to $ k $ times until $ n $ days have passed. Nevertheless, Manao is not satisfied by having a merely good trading algorithm, and wants to develop an optimal strategy for trading subject to these constraints. Help Manao achieve this goal by writing a program that will determine when to buy and sell stock to achieve the greatest possible profit during the $ n $ -day trading period subject to the above constraints.输入输出格式
输入格式
The first line contains two integers $ n $ and $ k $ , separated by a single space, with ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF391F1/a5ab9e286898dbcee31794b278fbbece7e35bdf0.png). The $ i $ -th of the following $ n $ lines contains a single integer $ p_{i} $ ( $ 0<=p_{i}<=10^{12} $ ), where $ p_{i} $ represents the price at which someone can either buy or sell one share of stock on day $ i $ . The problem consists of three subproblems. The subproblems have different constraints on the input. You will get some score for the correct submission of the subproblem. The description of the subproblems follows. - In subproblem F1 (8 points), $ n $ will be between $ 1 $ and $ 3000 $ , inclusive. - In subproblem F2 (15 points), $ n $ will be between $ 1 $ and $ 100000 $ , inclusive. - In subproblem F3 (10 points), $ n $ will be between $ 1 $ and $ 4000000 $ , inclusive.
输出格式
For this problem, the program will only report the amount of the optimal profit, rather than a list of trades that can achieve this profit. Therefore, the program should print one line containing a single integer, the maximum profit Manao can achieve over the next $ n $ days with the constraints of starting with no shares on the first day of trading, always owning either zero or one shares of stock, and buying at most $ k $ shares over the course of the $ n $ -day trading period.
输入输出样例
输入样例 #1
10 2
2
7
3
9
8
7
9
7
1
9
输出样例 #1
15
输入样例 #2
10 5
2
7
3
9
8
7
9
7
1
9
输出样例 #2
21