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 }