1. //f[i,j,1]表示走到第i天已经进行完j次交易并且手中没有股票的所有的购买方式的集合
  2. //f[i,j,0]表示走到第i天并且正在进行第j次交易且手中有货的所有的购买方式的集合
  3. //属性利益最大值
  4. //f[i,j,0]=max(f[i-1,j,0],f[i-1,j,1]+w[i])
  5. //表示从手中无货(不买)转移到手中无货 或者 手中有货(卖出)转移到手中无货
  6. //f[i,j,1]=max(f[i-1,j,1],f[i-1,j-1,0]-w[i])
  7. //表示从手中有货(不卖) 转移到手中有货 或者 手中无货(买进) 转移到手中有货
  8. #include <cstring>
  9. #include <iostream>
  10. #include <algorithm>
  11. using namespace std;
  12. const int N = , M = , INF = 0x3f3f3f3f;
  13. int n, m;
  14. int w[N];
  15. int f[N][M][];
  16. int main()
  17. {
  18. scanf("%d%d", &n, &m);
  19. for (int i = ; i <= n; i ++ ) scanf("%d", &w[i]);
  20. //一开始手中一定无货 也就是从初始状态走到无货状态 那么到有货状态为负无穷
  21. memset(f, -0x3f, sizeof f);
  22. //如果一次交易都没有进行,j=0,表示手中无货 f[i,0,0]是合法的,为0
  23. //f[i,0,1]不合法,为负无穷
  24. for (int i = ; i <= n; i ++ ) f[i][][] = ;
  25. for (int i = ; i <= n; i ++ )
  26. for (int j = ; j <= m; j ++ )
  27. {
  28. f[i][j][] = max(f[i - ][j][], f[i - ][j][] + w[i]);
  29. f[i][j][] = max(f[i - ][j][], f[i - ][j - ][] - w[i]);
  30. }
  31. int res = ;
  32. for (int i = ; i <= m; i ++ ) res = max(res, f[n][i][]);
  33. printf("%d\n", res);
  34. return ;
  35. }

AcWing 1057. 股票买卖 IV的更多相关文章

  1. AcWing 1058. 股票买卖 V

    //初始状态(入口)转移到手中无货的第>=2天 //最终状态(出口)可能从手中无货的第一天转移过来,或者从手中无货的第>=2天 //f[i,0]表示走到第i天,且位于手中有货的状态 //f ...

  2. 【学时总结】 ◆学时·IV◆ 数位DP

    [学时·IV] 数位DP ■基本策略■ 说白了就是超时和不超时的区别 :) 有一些特别的题与数位有关,但是用一般的枚举算法会超时.这时候就有人提出了--我们可以用动态规划!通过数字前一位和后一位之间的 ...

  3. AcWing 795. 前缀和

    题目地址  https://www.acwing.com/solution/AcWing/content/2075/ 题目描述输入一个长度为n的整数序列. 接下来再输入m个询问,每个询问输入一对l, ...

  4. 【LeetCode】188、买卖股票的最佳时机 IV

    Best Time to Buy and Sell Stock IV 题目等级:Hard 题目描述: Say you have an array for which the ith element i ...

  5. 用Kotlin开发Android应用(IV):定制视图和Android扩展

    原文标题:Kotlin for Android (IV): Custom Views and Android Extensions 原文链接:http://antonioleiva.com/kotli ...

  6. 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 753  Solved: 444[Submit][Status][Discuss] D ...

  7. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  8. LeetCode——Best Time to Buy and Sell Stock III (股票买卖时机问题3)

    问题: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  9. DES带IV向量加密解密工具

    链接:http://pan.baidu.com/s/1kVAV80J  密码:sgys 鉴于网上的DES加密解密都是不带IV向量的 我就自制了一个带IV向量的DES加密解密的小工具 © 2016-20 ...

随机推荐

  1. sublime text安装与使用记录

    一.安装Sublime Text 3 官网 http://www.sublimetext.com/3 进入官网选择所需版本下载 打开ST3,点击菜单 View -> Show Console,会 ...

  2. RedHat7安装NetCore环境并发布网站

    RedHat7安装NetCore环境并发布网站 1.注册Microsoft签名密钥并添加Microsoft产品提要,每台机器只需注册一次 执行下面的命令即可 rpm -Uvh https://pack ...

  3. 记录 2020年2月26日 java的一次远程技术面试

    1. 自我介绍 2.String 类型为什么是final类型?String 为啥不可变? String 类型是final类型原因: 1.不可变性支持线程安全(为了线程安全) 2.不可变性支持字符串常量 ...

  4. R语言矩阵维度“消失”的问题

    矩阵(matrix)是R语言中很基础的一种数据结构,也是R语言使用者经常使用的一种数据结构.矩阵的维度一般为二维(m*n). R语言中矩阵的操作是非常简单易懂的,但是在对R语言做矩阵操作时,有个地方需 ...

  5. git本地创建多个分支互不干扰

    git本地创建多个分支,互不干扰. 情景:在做某个需求a时,先需要修改紧急bug b:发版时发的是远程dev的代码.   方式一(推荐): (1)本地已有分支dev,写了需求a,先commit,即将工 ...

  6. Python3 协程相关 - 学习笔记

    什么是协程 协程的优势 Python3中的协程 生成器 yield/send yield + send(利用生成器实现协程) 协程的四个状态 协程终止 @asyncio.coroutine和yield ...

  7. matlab 中 find() 函数用法

    一. 功能: 寻找非零元素的索引和值 二.相关函数语法: ind = find(X) ind = find(X, k) ind = find(X, k, 'first') ind = find(X, ...

  8. css3基本选择器+属性选择器+动态伪类+UI状态伪类+结构类

    后代选择器 祖先元素 后代元素{ } 子元素选择器(直接子元素选择器) 父元素>子元素{ } 兄弟选择器 元素+兄弟元素(紧邻该元素之后的下一个兄弟元素) 所有兄弟元素选择器 元素~兄弟元素(该 ...

  9. 吴裕雄--天生自然HADOOP操作实验学习笔记:hbase的shell应用v2.0

    HRegion 当表的大小超过设置值的时候,HBase会自动地将表划分为不同的区域,每个区域包含所有行的一个子集.对用户来说,每个表是一堆数据的集合,靠主键来区分.从物理上来说,一张表被拆分成了多块, ...

  10. 洛谷题解 P1744 【采购特价商品】

    原题传送门 题目描述 中山路店山店海,成了购物狂爱与愁大神的"不归之路".中山路上有n(n<=100)家店,每家店的坐标均在-10000~10000之间.其中的m家店之间有通 ...