题目

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

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

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

输入格式

第一行包含整数 N 和 k,表示数组的长度以及你可以完成的最大交易数量。

第二行包含 N 个不超过 100001000010000 的正整数,表示完整的数组。

输出格式

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

数据范围

1≤N≤1051≤N≤10^51≤N≤105
1≤k≤1001≤k≤1001≤k≤100

输入样例1:

3 2
2 4 1

输出样例1:

2

输入样例2:

6 2
3 2 6 5 0 3

输出样例2:

7

样例解释

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

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

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int n,k,a[100005],f[100005][103][2],ans;int main(){cin>>n>>K;for(int i=1; i<=n; i++) cin>>a[i];memset(f,-0x3f,sizeof(f)); for(int i=0; i<=n; i++) f[i][0][0] = 0;for(int i=1; i<=n; i++) for(int j=1; j<=k; j++) {f[i][j][0] = max(f[i-1][j][0],f[i-1][j][1]+a[i]);f[i][j][1] = max(f[i-1][j][1],f[i-1][j-1][0]-a[i]);}for(int i=0; i<=k; i++) ans = max(ans,f[n][i][0]);cout<<ans;return 0;
}

AcWing 1057. 股票买卖 IV相关推荐

  1. AcWing 1058. 股票买卖 V

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

  2. AcWing 1056. 股票买卖 III

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

  3. AcWing 1055. 股票买卖 II

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

  4. AcWing 1054. 股票买卖

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

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

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

  6. Acwing算法—动态规划

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

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

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

  8. AcWing算法提高课

    1. 动态规划(43/68) 1.1 数字三角形模型(4/4) 1.1.1 AcWing 1015. 摘花生 结论: f[i][j]=max⁡(f[i−1][j],f[i][j−1])+w[i][j] ...

  9. 【动态规划】状态机模型

    整理的算法模板合集: ACM模板 文章目录 A.抛砖引玉 - AcWing 1049. 大盗阿福 B.AcWing 1057. 股票买卖 IV C.AcWing 1058. 股票买卖 V D.AcWi ...

最新文章

  1. 模型部署神器:高中生也能读懂的Docker入门教程
  2. c语言一个偶数用两个素数表示,用java怎样编写一个偶数总能表示为两个素数之和的程序...
  3. python中判断字符是否为中文
  4. MooTools教程(1):认识MooTools
  5. python基础教程:类型转换和舍入
  6. vant-UI组件初使用:浅谈 - 解说篇
  7. jsp el表达式无法正常显示解决方法
  8. 如何制作个人网站(如何搭建个人博客)
  9. chrome扩展程序安装_如何在Windows上删除“由企业策略安装”的Chrome扩展程序
  10. 佳能dpp4中文版 附使用教程
  11. falcon-agent模块代码里执行sys.CmdOutBytes命令导致的问题
  12. 【drawio笔记】在drawio中添加数学公式
  13. R: symbol lookup error: /home/lib/../../libreadline.so.6: undefined symbol: PC
  14. python处理excel表格
  15. arm mali 天梯图_手机最新CPU天梯图 2018年12月手机最新处理器排名表
  16. Python socket文件上传下载
  17. Java实现-跳跃游戏
  18. java Steam流的用法
  19. 如何在线制作APP图标?
  20. 3D动作绑定_三维动画制作流程——商迪3D科普分享系列(二)

热门文章

  1. NSURLConnection-网络访问(同步异步)
  2. Viod Class 启动
  3. python3.6新特性
  4. 有鱼上钩!卖鱼!卖鱼!
  5. js,vue.js一些方法的总结
  6. java_web学习(六) request对象中的get和post差异
  7. linux安装图像界面
  8. java多线程知识点总结
  9. cakephp 2.0 源码解读(一)
  10. 毕设项目,系统搭建笔记文档