ACM训练题目【股票买卖Ⅱ】

简介: 3.思路与代码贪心思路:看相邻的两天,只要后一天价格比前一天高,那么就无脑进行交易一次,最终得到一个全局的最优解


1.题目



2.输入输出案例


输入样例1:


6
7 1 5 3 6 4


输出样例1:


7


输入样例2:


5
1 2 3 4 5


输出样例2:


4


输入样例3:


5
7 6 4 3 1


输出样例3:


0


样例解释


样例1:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 =3 。共得利润 4+3 = 7。


样例2:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。


样例3:在这种情况下, 不进行任何交易, 所以最大利润为 0。


3.思路与代码


贪心思路:看相邻的两天,只要后一天价格比前一天高,那么就无脑进行交易一次,最终得到一个全局的最优解


#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int arr[N];
int main()
{
    int n;
    long long ans=0;
    cin>>n;
    for(int i=0;i<n;i++)
        scanf("%d",&arr[i]);
    for(int i=0;i<n-1;i++)
        if(arr[i+1]>arr[i])
            ans+=(arr[i+1]-arr[i]);
    cout<<ans;
    return 0;
}
目录
相关文章
|
算法
ACM算法训练【前缀和】
ACM算法训练【前缀和】
57 1
ACM算法训练【前缀和】
|
人工智能 算法
ACM算法训练【双指针算法合集】
思路: 找到i,j的单调性,统一向后移动,使时间复杂度为O(2n) 枚举i,每次看j是否需要向后走,得到最长的长度
92 1
ACM算法训练【双指针算法合集】
|
算法
ACM算法训练【差分】
ACM算法训练【差分】
44 1
ACM算法训练【差分】
|
算法
ACM算法训练【贪心合集】
ACM算法训练【贪心合集】
127 0
ACM算法训练【贪心合集】
|
算法
ACM算法训练【KMP算法】
ACM算法训练【KMP算法】
85 0
ACM算法训练【KMP算法】
|
算法
ACM算法训练【区间合并】
思路: • 按区间左端点排序,每次维护一个区间 • 新增区间的三种关系:
135 0
ACM算法训练【区间合并】
|
算法 C++
ACM算法训练【第k个数】
ACM算法训练【第k个数】
44 0
ACM算法训练【第k个数】
|
算法 C++
ACM算法训练【快速排序】
ACM算法训练【快速排序】
56 0
ACM算法训练【快速排序】
|
算法
ACM算法训练【数的范围】
ACM算法训练【数的范围】
88 0
ACM算法训练【数的范围】
下一篇
无影云桌面