//f[i,j,1]表示走到第i天已经进行完j次交易并且手中没有股票的所有的购买方式的集合
//f[i,j,0]表示走到第i天并且正在进行第j次交易且手中有货的所有的购买方式的集合
//属性利益最大值
//f[i,j,0]=max(f[i-1,j,0],f[i-1,j,1]+w[i])
//表示从手中无货(不买)转移到手中无货 或者 手中有货(卖出)转移到手中无货
//f[i,j,1]=max(f[i-1,j,1],f[i-1,j-1,0]-w[i])
//表示从手中有货(不卖) 转移到手中有货 或者 手中无货(买进) 转移到手中有货
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = , M = , INF = 0x3f3f3f3f;
int n, m;
int w[N];
int f[N][M][];
int main()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i ++ ) scanf("%d", &w[i]);
//一开始手中一定无货 也就是从初始状态走到无货状态 那么到有货状态为负无穷
memset(f, -0x3f, sizeof f);
//如果一次交易都没有进行,j=0,表示手中无货 f[i,0,0]是合法的,为0
//f[i,0,1]不合法,为负无穷
for (int i = ; i <= n; i ++ ) f[i][][] = ;
for (int i = ; i <= n; i ++ )
for (int j = ; j <= m; j ++ )
{
f[i][j][] = max(f[i - ][j][], f[i - ][j][] + w[i]);
f[i][j][] = max(f[i - ][j][], f[i - ][j - ][] - w[i]);
}
int res = ;
for (int i = ; i <= m; i ++ ) res = max(res, f[n][i][]);
printf("%d\n", res);
return ;
}

最新文章

  1. javascript - 享元模式
  2. JDBC的一些基础提交语句回顾
  3. Linux编程 ---- dup函数
  4. hdu1260 dp
  5. object references an unsaved transient instance - save the transient instance before flushing错误
  6. lazyload.js实现图片异步载入
  7. phpstorm 实用快捷键 和 注释
  8. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
  9. 【转】【Http】Http各种错误的意思
  10. CUBRID学习笔记 7 ms常见错误
  11. vs2013常用快捷键收集
  12. Cookie与Session的一些总结
  13. [NYOJ 860] 又见01背包
  14. VS2010 release 和 debug 调试区别
  15. insert 加的锁
  16. Mysql 忘密码 + Phpadmin 修改密码无法登陆
  17. 《Android系统源代码情景分析》连载回忆录:灵感之源
  18. bzoj 2946
  19. MySQL — 优化之explain执行计划详解(转)
  20. linux随手笔记(Centos为主)

热门文章

  1. RPC(简单实现)
  2. IIS网站部署配置
  3. #《Essential C++》读书笔记# 第六章 以template进行编程
  4. #《Essential C++》读书笔记# 第二章 面向过程的编程风格
  5. 今日确定开源近两年来的EA程序
  6. vuex的state在组件选项data和computed上引用的区别
  7. 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)
  8. cf936B
  9. C语言再学习part1-宏观认识C语言
  10. grep 基本用法