AcWing 1055. 股票买卖 II

原题链接

考察:贪心

思路:

        任何跨度>1的交易都能变成长度 = 1的交易.设价格 a,b,c. 假设a买入c卖出为最优解. 那么最大收益 = c- a = c-b+b-a.如果b<a,那么b买入更优,与假设不符.所以b一定>=a.

 1 #include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 const int N = 100010;
 6 int ans,a[N];
 7 int main()
 8 {
 9     int n;
10     scanf("%d",&n);
11     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
12     for(int i=1,j=1;i<=n;i++)
13     {
14         j = i;
15         while(j<n&&a[j+1]>=a[j]) j++;
16         ans+=a[j]-a[i];
17         i = j;
18     }
19     printf("%d\n",ans);
20     return 0;
21 }

 

posted @ 2021-02-25 23:16  acmloser  阅读(66)  评论(0编辑  收藏  举报