問題解決の取引を定量化

小さなヒープルート、最小株価を維持:これは魔法の貪欲な戦略があり、貪欲な主題です。

  1. 電流i日の株価は、ヒープの最上部よりも大きい場合には、違いは、答えるヒープのポップアップとトップ、2つのI日の株価を挿入するために蓄積されます。
  2. ヒープの最上部よりも少ない場合には、株価のi日に直接挿入します。

株式その後、株価を販売する最初のがBであれば、利益にCAを取得することができるので、株価のときC最高の売買株式の価格の面では<B <Cの価格を考えてみましょうその後、利益はB-A + CB = CAである、あなたが見ることができる、2つの方法によって得られた利益は同じであるCの販売価格は、A、Bの株価はトランジット駅に相当します。しかし、実際には、我々はBの価格で株式を購入することを選択しなかったので、私たちは二度Bを購入する必要があります。

なぜ最高の?
     毎回ので、私たちは最良の選択、最低価格高価格で販売株式と同等の操作を行います。

コードを接続します。

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3 typedefの長い 長いLL。
4 LL [ 100005 ]、ANS。
5  int型N、CNT。
6  
7  INT メイン(){
 8      ながら(scanf関数(" %のD "、&​​N)=!EOF){
 9          のmemset(0はsizeof (a)参照)。
10の          ANS = 0 11          PRIORITY_QUEUE <LL> Q。
12          のためのint型I = 1 ; I <= N; ++ I)のscanf(" %のLLD "、および[I])。
13          のためにint型 i = 1 ; iが<= N; ++ I){
 14              であれば(q.empty()|| [I] <= - q.top()) - q.push([I] );
15              {
 16                  ANS + = A [i]が+ q.top()。
17                  q.pop()。
18                  q.push(-a [I]); q.push( - [I])。
19              }
 20          }
 21          のprintf(" ケース#1%のD:%LLDする\ n "、++ CNT、ANS)。
22      }
 23      リターン 0 24 }

 

おすすめ

転載: www.cnblogs.com/Asika3912333/p/11317279.html