股票买卖Ⅴ

news2025/1/15 20:08:49

题目描述

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

设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

  • 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
  • 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。

输入格式
第一行包含整数 N N N,表示数组长度。

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

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

数据范围
1 ≤ N ≤ 1 0 5 1≤N≤10^5 1N105

输入样例:

5
1 2 3 0 2

输出样例:

3

样例解释
对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出],第一笔交易可得利润 2-1 = 1,第二笔交易可得利润 2-0 = 2,共得利润 1+2 = 3。


相比于前面的股票买卖,多了一个 “冷却期” 的概念,而把它意思转换一下就是 “手中无股的第1天” ,所以需要再列出一个状态来与表示“手中无股的第2≥天”的状态区分开,因此状态机模型如下:

请添加图片描述

这里入口选择“手中无股第≥2天”的原因是在该状态下,既没开始买股票(笔数=0),又由于没处在冷却期,所以此时也可以开始进行买股票。

状态表示: f ( i , 0 / 1 / 2 ) f(i,0/1/2) f(i,0/1/2):在第 i i i 天时股票处于[0:手中未持股的第1天、1:手中持股、2:手中未持股的第≥2天]状态下的最大利润。
具体状态转移方程见Code。

C++代码

#include <iostream>
#include <cstring>
using namespace std;

const int N = 1e5 + 10;

int p[N];
int f[N][3];            //0:手中未持股的第1天、1:手中持股、2:手中未持股的第≥2天.
int n;

int main(){
    cin >> n;
    for(int i = 1;i <= n;i ++)      cin >> p[i];
    
    //入口是手中未持股≥2天
    memset(f, -0x3f, sizeof f);         //遇到数据量较大一点的话-∞要设置成-0x3f3f3f3f
    f[0][2] = 0;
    
    for(int i = 1;i <= n;i ++){
        f[i][0] = f[i - 1][1] + p[i];
        f[i][1] = max(f[i - 1][1], f[i - 1][2] - p[i]);
        f[i][2] = max(f[i - 1][2], f[i - 1][0]);
    }
    
    cout << max(f[n][0], f[n][2]) << endl;
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高精地图_语义地图_众包地图相关论文笔记

1.20220618_LT-mapper: A Modular Framework for LiDAR-based Lifelong Mapping 20213d-Lidar构建long-term地图分为 SLAM模块&#xff08;每个session的点云地图通过关键帧构建&#xff0c;对不同session的关键帧进行anchor node检测&#xff0c;基于anchor帧构建的闭环因子实…

VSCode中Java程序入口的数据输入流的常用形式

1.前言 VSCode需要配置好Java环境&#xff0c;配置链接按官网教程即可&#xff1a;Getting Started with Java in Visual Studio Code VSCode目录./vscode下文件说明如下&#xff1a; setting.json &#xff1a; 配置vscode编辑器特性配置&#xff0c;同时基础Java Project中…

如何避免缓存穿透、缓存击穿、缓存雪崩?

缓存雪崩&#xff1a; 缓存雪崩是指缓存同⼀时间⼤⾯积的失效&#xff0c;所以&#xff0c;后⾯的请求都会落到数据库上&#xff0c;造成数据库短时间内承受⼤量请求⽽崩掉。解决方案&#xff1a; 缓存数据的过期时间设置随机&#xff0c;防⽌同⼀时间⼤量数据过期现象发⽣。…

微信小程序接入火山引擎埋点数据

1&#xff0c;文档中心-火山引擎 2&#xff0c;文档中心-火山引擎 3&#xff0c;文档中心-火山引擎 上面的链接是三个最重点的部分。 首先按照1的步骤安装SDK。npm install datarangers/sdk-mp 配置合法域名将https://mcs.volceapplog.com添加到小程序后台的“request合法域…

你能懂的 Reflect 反射

你能懂得 JS 之 Reflect 反射 上一篇文章《Proxy 代理对象使用详解即原理总结》我们详细介绍了 Proxy 代理对象的使用及其工作原理&#xff08;不了解的同学可以去看看哦&#xff09;&#xff0c;今天我们来聊聊它的好兄弟 Reflect 反射。 特点 Reflect 是一个内置全局对象&a…

[go学习笔记.第十六章.TCP编程] 4.项目-海量用户即时通讯系统-显示在线用户列表,群聊

1.实现功能-完成登录时能返回当前在线用户 用户登录后,可以得到当前在线用户列表 示意图如下: 步骤: (1).编写了server/processBlock/userManager.go package processBlockimport ("fmt" )//因为UserManager实例在服务器中有且只有一个,并且在很多地方都要使用,因…

博客系统前端页面

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 博客系统 前言 一.预期效果 博客列表页效果 博客正文页效果 博客登录页效果 博客编辑页效果 二.实现博客列表页 实现导航栏 实现版心 实现个人信息 …

【DELM分类】基于matlab麻雀搜索算法改进深度学习极限学习机数据分类【含Matlab源码 2235期】

⛄一、麻雀搜索算法改进深度学习极限学习机数据分类 1 深度极限学习机 深度极限学习机算法(Deep Extreme Learning Machine, DELM)又称多层极限学习机.存在N个训练样本&#xff0c;其中 2 麻雀搜索算法(SSA) 2020年&#xff0c;薛建凯等人提出了麻雀搜索算法.麻雀搜索算法是一…

python判断语句

一、布尔类型和比较运算符 布尔类型 只有两个结果 是 / 否 定义变量存储布尔类型数据&#xff1a; 变量名称布尔类型字面量 布尔类型的数据不仅可以通过定义得到也可以通过比较运算符比较内容得到 比较运算符&#xff1a; 二、if判断语句基本格式 程序中的判断&#…

如何鉴别一个成功的Scrum 教练?

成功的Scrum教练&#xff1a;如何鉴别一个成功的Scrum教练&#xff1f;了解更多关于优秀的Scrum专家的特征。 前言: 成功的Scrum 教练 - 我认为的九大标准 如何判别Scrum 教练是否是合格的&#xff1f;Scrum 教练成功的标准是什么&#xff1f;经常使用Confluence回顾性模板是不…

java创建线程的方式到底有几种?(详解)

创建线程的方式到底有几种&#xff1f;一&#xff0c;创建多线程的方式1&#xff0c;官方解释2&#xff0c;实现Runnable接口3&#xff0c;继承Thread类3&#xff0c;二者区别3.1&#xff0c;本质区别3.2&#xff0c;优先考虑使用第一种二&#xff0c;误以为是创建线程的几种新…

react(子传父、父传子)

目录 1. 父传子 数组/对象 的两种写法 2. 子传父&#xff1a; 3. 生成唯一id的库&#xff1a; 4. 对接收的组件进行验证 1. 父传子 数组/对象 的两种写法 function App() {const obj [{age:19},{age:19}]return (<div className"App"><header classNa…

Jmeter常用参数化技巧总结

说起接口测试&#xff0c;相信大家在工作中用的最多的还是Jmeter。 JMeter是一个100&#xff05;的纯Java桌面应用&#xff0c;由Apache组织的开放源代码项目&#xff0c;它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA 等多种协议。 在做…

uniapp之使用map组件显示接收过来的经纬度

目录 前言 效果图 提示 总代码 分析 1.显示自己位置的属性 2.markers 点标记 前言 由于项目的需求&#xff0c;我需要从主页面接收经纬度&#xff0c;并渲染至地图上面&#xff0c;同时呢&#xff0c;也要在该位置上显示图标标记点&#xff08;红色&#xff09;&#x…

兴业数金 测试 面试真题|面经

兴业数金测试服务中心技术面&#xff08; 一面二面&#xff09; 时间线流程 8.12一面&#xff08;30min&#xff09;->8.31邮件通知二面&#xff0c;填写职位申请表->9.2二面&#xff08;25min&#xff0c;二面需要用小鱼易连&#xff0c;需提前下载和注册&#xff09; …

儿童台灯怎么选对眼睛最好?2022年的现在如何挑选儿童台灯呢

儿童台灯选择首要考虑因素就是护眼&#xff0c;而是否护眼&#xff0c;可以从以下几个角度去看。 一、照度。根据国家标准划分&#xff0c;照度可分为国A和国AA两级&#xff0c;它们可以衡量光线明亮程度和均匀程度&#xff0c;儿童台灯选择国AA级对眼睛最好。 二、显色指数。…

Java#19(面向对象三大特征之一:多态)

目录 一.多态 二.多态中调用成员的特点 三.instanceof关键字 一.多态 多态:同类型的对象,表现出的不同形态 格式:父类类型 对象名称 子类对象; 前提: (1)有继承关系 (2)有父类引用指向子类对象 (3)有方法重构 优点: (1)使用父类作为参数,可以接收所有子类对象 (2)体现多态的…

科技金融企业助力乡村振兴,能有多大新意?

最近几年&#xff0c;越来越多科技互联网企业开始承担起他们的社会责任&#xff0c;成为乡村振兴领域一股不可忽视的力量。作为电商平台&#xff0c;阿里、拼多多、京东助力农产品上行&#xff0c;解决农产品的销售难题&#xff0c;直接为乡村振兴领域做出大贡献&#xff0c;但…

罗丹明PEG活性酯 RB-PEG-NHS,罗丹明聚乙二醇活性酯,Rhodamine-PEG-NHS

产品名称 罗丹明聚乙二醇活性酯 RB-PEG-NHS 中文名称 罗丹明PEG活性酯 活性酯PEG罗丹明 活性酯聚乙二醇罗丹明 英文名称 RB-PEG-NHS RB-PEG-SC Rhodamine-PEG-NHS 分子量 400 600 1000 2000 3400 5000 10000 结构式&#xff1a; CAS N/A 溶解度 溶于DMSO,DMF,DCM&#xff…

Linux进阶-编译工具链

gcc编译器&#xff08;预处理、编译&#xff09; binutils工具集&#xff08;汇编、链接&#xff09; 本地编译&#xff1a;编译工具链和目标程序运行在相同的架构平台。 交叉编译&#xff1a;编译工具链和目标程序运行在不同的架构平台。 ARM-GCC是GCC编译工具链的一个分支…