1302:股票买卖

股票买卖

合唱队形 有异曲同工之妙!

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=1e5+5;
 7 int price[N];
 8 int minn[N],maxx[N];
 9 int li[N],ri[N];
10 
11 int main(){
12     int t;
13     cin>>t;
14     while(t--){
15         int n;
16         cin>>n;
17         for(int i=1;i<=n;i++)scanf("%d",price+i);
18         minn[1]=price[1],li[1]=0;
19         for(int i=2;i<=n;i++){
20             minn[i]=min(minn[i-1],price[i]);//minn[i]表示前i天的最低价格
21             li[i]=max(li[i-1],price[i]-minn[i]);//li[i]表示前i天卖出能获得的最大利润
22         }
23         maxx[n]=price[n],ri[n]=0;
24         for(int i=n-1;i>0;i--){
25             maxx[i]=max(maxx[i+1],price[i]);//maxx[i]表示第i天到第n天的最高价格
26             ri[i]=max(ri[i+1],maxx[i]-price[i]);//ri[i]表示第i天到第n天买入能获得的最大利润
27         }
28         int ans=0;
29         for(int i=1;i<=n;i++){
30             ans=max(ans,li[i]+ri[i]);
31         }
32         printf("%d\n",ans);
33     }
34     return 0;
35 }

 

posted @ 2021-08-23 10:21  Rekord  阅读(378)  评论(0编辑  收藏  举报