1. 程式人生 > >hiho 1604 - 股票價格,思維題

hiho 1604 - 股票價格,思維題

namespace 價格 algorithm nbsp set 關註 i++ ref --

題目鏈接

題目大意

小Hi最近在關註股票,為了計算股票可能的盈利,他獲取了一只股票最近N天的價格A1~AN

在小Hi的策略中,每天可以在下列三種操作中選取一種:

1.什麽也不做;

2.按照當天的價格買進一個單位的股票;

3.按照當天的價格賣出部分或所有股票。

現在小Hi希望能夠知道,如果在N天前手中持有的股票數為0,並且假設擁有無限的金錢,在這N天結束能夠獲得的最大利潤是多少?

第一行包含一個整數N。

第二行包含N個整數,A1, A2, ... AN

對於30%的數據, 1 ≤ N ≤ 103

對於100%的數據,1 ≤ N ≤ 106, 1 ≤ Ai ≤ 100

----------------------------------------------------------------------------------------------------------------------------

畫下折線圖就明白了,從後向前找,如果小於當前股票值 ans+=差值,這就是利潤

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;
const int N = 1000100;
int A[N];

int main(){
    int n; cin>>n; int ans = 0;
    for(int i=0;i<n;i++) scanf("%d",A+i);
    for(int i=n-1;i>=0;){
        int j=i-1;
        for(;j>=0;j--){
            if(A[j]<A[i]) ans+=A[i]-A[j];
            else break;
        }
        i = j;
    }
    printf("%d\n",ans);
    return 0;
}

hiho 1604 - 股票價格,思維題