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;
}
目录
相关文章
|
机器学习/深度学习 人工智能 BI
蓝桥杯日常训练
题目描述 100 100100 可以表示为带分数的形式:100 = 3 + 69258 714 100 = 3 + \frac{69258}{714}100=3+ 714 69258 。 还可以表示为:100 = 82 + 3546 197 100 = 82 + \frac{3546}{197}100=82+ 197 3546 。 注意特征:带分数中,数字 1 11 ~ 9 99 分别出现且只出现一次(不包含 0 00)。 类似这样的带分数,100 100100 有 11 1111 种表示法。
81 0
|
算法
ACM算法训练【前缀和】
ACM算法训练【前缀和】
43 1
ACM算法训练【前缀和】
|
人工智能 算法
ACM算法训练【双指针算法合集】
思路: 找到i,j的单调性,统一向后移动,使时间复杂度为O(2n) 枚举i,每次看j是否需要向后走,得到最长的长度
80 1
ACM算法训练【双指针算法合集】
|
算法
ACM算法训练【差分】
ACM算法训练【差分】
35 1
ACM算法训练【差分】
|
人工智能 算法
ACM算法训练【区间和·离散化】
1.离散化 离散化:适合条件 (数字的值域非常大,但是个数非常少) 什么是离散化:把值域大的数字的序列映射到从0开始的自然数数组里(无法开辟出值域那么大的数组)
127 1
ACM算法训练【区间和·离散化】
|
算法
ACM算法训练【KMP算法】
ACM算法训练【KMP算法】
71 0
ACM算法训练【KMP算法】
|
算法
ACM算法训练【贪心合集】
ACM算法训练【贪心合集】
99 0
ACM算法训练【贪心合集】
|
算法
ACM算法训练【区间合并】
思路: • 按区间左端点排序,每次维护一个区间 • 新增区间的三种关系:
102 0
ACM算法训练【区间合并】

热门文章

最新文章