注: 重複はありません。2 回目の購入は、最初の販売よりも遅くする必要があります。
最後の取引日からの株式の相場のストリームが与えられます。すでに時間がソートされていると仮定します。この株で 2 回の取引を行って得られた最大の金額を求めてください。売買は1回の取引としてカウントされます。
例:
time Price
1 10
2 11
3 7
4 15
5 8
6 17
7 16
答えは 8 + 9 で、3 で買い、4 で売り、5 で買い、6 で売る。
注: 重複はありません。2 回目の購入は、最初の販売よりも遅くする必要があります。
最後の取引日からの株式の相場のストリームが与えられます。すでに時間がソートされていると仮定します。この株で 2 回の取引を行って得られた最大の金額を求めてください。売買は1回の取引としてカウントされます。
例:
time Price
1 10
2 11
3 7
4 15
5 8
6 17
7 16
答えは 8 + 9 で、3 で買い、4 で売り、5 で買い、6 で売る。
動的計画法
d[i][j].b = i 回目の収入、j 回のトランザクション、j 回目のトランザクションのみ購入 d[i][j].s = i 回目の収入、j 回のトランザクション、 j 番目のトランザクションの売買ベース d[i][j].b = d[i][j].v = -inf; d[0][0].s = 0;
この特定のケースでは、j は 1-2 のみです
d[i][j].b = max(d[i-1][j-1].s - price[i], d[i-1][j].b)
d[i][j].s = max(d[i-1][j].b + price[i], d[i-1][j].s)
このようなもの
O(n*k) ここで、k - トランザクション数、この場合 O(n)