acwing1057. 股票买卖 IV(状态机模型)

acwing1057. 股票买卖 IV(状态机模型)给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润,你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。输入格式第一行包含整数 N 和 k,表示数组的长度以及你可以完成的最大交易数量。第二行包含 N 个不超过 10000 的正整数,表示完整的数组。输出格式输出一个整数,表示最大利润。数据范围1≤N≤105,1≤k≤100输入样例1:3 22

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

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

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

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

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

数据范围
1≤N≤105,
1≤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.

题解
f[k][i][0]表示第i天已经进行了k次交易并且手里没货的最大收益
f[k][i][1]表示第i天已经进行了k次交易并且手里有货的最大收益

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
const int KN = 110;
int f[KN][N][2];
int a[N];
const int INF = 0x3f3f3f3f;
int main(){ 
   
    int n,K;
    cin>>n>>K;
    for(int i = 0;i <= K;i ++)f[i][0][1] = -INF;
    for(int i = 1;i <= n;i ++){ 
   
        cin >> a[i];
        for(int k = 0;k <= K;k ++){ 
   
            f[k][i][0] = f[k][i - 1][0];
            if(k >= 1)f[k][i][0] = max(f[k][i][0],f[k - 1][i - 1][1] + a[i]);
            f[k][i][1] = max(f[k][i - 1][1],f[k][i - 1][0] - a[i]);
        }
    }
    cout<<f[K][n][0];
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168862.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Runnable接口详细详解「建议收藏」

    Runnable接口详细详解「建议收藏」创建线程对象,默认有一个线程名,以Thread-开头,从0开始计数构造函数Thread()Thread-0Thread-1Thread-2其他构造方法Thread(Runnabletarget)如果在构造thread的时候没有传递Runnable或者没有复写Thread的run方法,该thread将不会调用任何的东西,如果传递了Runnable接口的实例,后者复写了Thread的run方法,则会执行该方法的逻辑单元(逻辑代码)publicclassCreateThread2..

    2025年6月9日
    2
  • 随机梯度下降法和批量梯度下降法_梯度下降法优化

    随机梯度下降法和批量梯度下降法_梯度下降法优化深度学习最常用的优化方法就是随机梯度下降法,但是随机梯度下降法在某些情况下会失效,这是为什么呢?带着这个问题我们接着往下看。一个经典的例子就是假设你现在在山上,为了以最快的速度下山,且视线良好,你可以看清自己的位置以及所处位置的坡度,那么沿着坡向下走,最终你会走到山底。∑i=1n∇θf(θ;xi,yi)+∇θϕ(θ)\sum_{i=1}^{n}\nabla_{\theta}f\left(\theta;x_{i},y_{i}\right)+\nabla_{\theta}\phi(\theta

    2022年9月10日
    2
  • jetty和tomcat性能比较_tomcat启动jar包

    jetty和tomcat性能比较_tomcat启动jar包相同点1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范不同点1.架构比较jetty相比tomcat更为简单jetty架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单tomcat的框架是基于容量设计的,进行扩展是需要了解tomcat的整体设计结构,不易扩展2.性能比较

    2025年8月3日
    1
  • 几种ARM编译器及IDE开发环境[通俗易懂]

    几种ARM编译器及IDE开发环境[通俗易懂]ARM应用软件的开发工具根据功能的不同,分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等,目前世界上约有四十多家公司提供以上不同类别的产品。  用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE…

    2022年6月1日
    168
  • MySQL中的数据类型_请列举MySQL中常见的数据类型

    MySQL中的数据类型_请列举MySQL中常见的数据类型还在纠结javaType和jdbcType?MySQL数据类型对应Java什么类型?JdbcType类型和Java对象有什么对应关系?数据库类型的Integer是对应int还是对应Integer?本文带你一探究竟!

    2025年8月31日
    5
  • Linux(centos7)离现安装kubernetes1.19.2和docker——组件部分

    Linux(centos7)离现安装kubernetes1.19.2和docker——组件部分

    2021年5月15日
    117

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号