题目

给定一个长度为 NNN 的数组,数组中的第 iii 个数字表示一个给定股票在第 iii 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。

注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

输入格式

第一行包含整数 N,表示数组长度。

第二行包含 N 个不大于 10910^9109的正整数,表示完整的数组。

输出格式

输出一个整数,表示最大利润。

数据范围

1≤N≤1051≤N≤10^51≤N≤105

输入样例1:

8
3 3 5 0 0 3 1 4

输出样例1:

6

输入样例2:

5
1 2 3 4 5

输出样例2:

4

输入样例3:

5
7 6 4 3 1

输出样例3:

0

样例解释

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

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

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

#include<iostream>
#include<string>
typedef long long ll;
#define MAXN 200011
ll f[5][MAXN];
int main()
{memset(f,0xcf,sizeof f);ll n;cin>>n;f[0][0]=0;for(ll i=1;i<=n;++i){ll x;cin>>x;f[0][i]=f[0][i-1];f[1][i]=max(f[1][i-1],f[0][i-1]-x);f[2][i]=max(f[2][i-1],f[1][i-1]+x);f[3][i]=max(f[3][i-1],f[2][i-1]-x);f[4][i]=max(f[4][i-1],f[3][i-1]+x);}ll ans = max(f[0][n],max(f[2][n],f[4][n]));cout<<ans;return 0;
}

AcWing 1056. 股票买卖 III相关推荐

  1. 第三讲:股票买卖 III

    题目: AcWing 1056. 股票买卖 III 给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成两笔交 ...

  2. AcWing 1055. 股票买卖 II

    题目 给定一个长度为 NNN 的数组,数组中的第 iii 个数字表示一个给定股票在第 iii天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意 ...

  3. AcWing 1054. 股票买卖

    题目 给定一个长度为 NNN的数组,数组中的第 iii个数字表示一个给定股票在第 iii 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注 ...

  4. AcWing - 求组合数 III(lucas逆元)

    题目链接:https://www.acwing.com/problem/content/description/889/ 时/空限制:1s / 64MB 题目描述 给定n组询问,每组询问给定三个整数a ...

  5. AcWing 1057. 股票买卖 IV

    题目 给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润,你最多可以完成 k 笔交易. 注意:你不能同时参与多笔交易(你必须 ...

  6. AcWing 1058. 股票买卖 V

    题目 给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格. 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不 ...

  7. DP 状态机模型 AcWing算法提高课 详解

    状态机模型 AcWing 1049. 大盗阿福 #include <iostream> #include <algorithm> #include <cmath> ...

  8. Acwing算法—动态规划

    目录 数字三角形模型 AcWing 898. 数字三角形 AcWing 1015. 摘花生 AcWing 1018. 最低通行费 AcWing 1027. 方格取数 AcWing 275. 传纸条 最 ...

  9. 算法——AcWing算法提高课中代码和题解

    文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...

最新文章

  1. python eval 入门_Python学习笔记整理3之输入输出、python eval函数
  2. dataframe筛选数据根据某一个列的数据在另外的一个数组中
  3. LIN总线接口静电保护专用器件:DW24DLC-B-S和DW24D-B-S
  4. screen状态变Attached连接会话失败
  5. 【转】SharePoint 2013 开发——开发并部署webpart
  6. mysql 函数怎样创建_mysql里怎样创建函数
  7. 北大教师:300元每月的生活费,3个馒头,一瓶矿泉水就是午餐
  8. 蓝桥杯 ADV-156算法提高 分分钟的碎碎念(动态规划)
  9. POJ 2393 Yogurt factory
  10. 菜鸟python实例_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
  11. java课程设计实验报告_《java课程设计实验报告.doc
  12. atom markdown转换PDF 解决AssertionError: html-pdf: Failed to load PhantomJS module
  13. 在matlab中的polyval函数,Python/Numpy中三输出等价的Matlab polyval函数
  14. 在TPU上运行PyTorch的技巧总结
  15. 【思考】关于英语论文写作的底层逻辑思考
  16. sftp服务器下载文件至本地电脑
  17. 使用计算机需要准备硬件和什么,2017年计算机硬件知识参考试题
  18. 单片机控制ws2812b
  19. mybatis中使用小于号<
  20. js遍历localStorage的键值对

热门文章

  1. php 抽象类 静态 单体设计模式
  2. spring核心:bean工厂的装配 3
  3. Android大学课件SQLite3 数据库操作
  4. Codeforces Round #460 (Div. 2)
  5. ClassNotFoundException: javax.validation.ValidatorFactory
  6. Head First 设计模式--1策略模式 组合优于继承
  7. handler 与message的一些理解
  8. 常用Git命令和配置
  9. xml文件的三种解析方式 DOM SAM PULL
  10. CYQ.Data 轻量数据层之路 V3.0版本发布-Xml绝对杀手(三十二)