AcWing 1055. 股票买卖 II

文章目录

前言

继续写简单题。哈哈哈。

AcWing 1055. 股票买卖 II

代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N];
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int ans=0;
    for(int i=0;i<n-1;i++){
        ans+=max(0,a[i+1]-a[i]);
    }
    cout<<ans<<endl;
    return 0;
}

思路

这个是一个贪心题,就是求最大值,每一步选最优解。额我怎么知道会不会获利呢?假设原来的数组是上升的,那么就可以交易,假设不是上升的,我就不交易。这其实就相当于开挂了。但是我们需要知道现在自己能不能买得起这个股票。第一天应该是默认可以购买的。假设钱足够吗?是的,应该是假设钱足够,数字后面都没有带单位。

然后就是第二个样例,比较复杂。 1 2 3 4 5 ,最优解是 1 的时候买入,5 的时候卖出。也就是说最优解是在最小的时候买入,最大的时候卖出。但是我们怎么知道什么时候最大呢,或者说,不会存在其他情况累加之后比当前选择更优。有点想不清楚。

数据范围是十万,O(nlogn) 是可以接受的,排序,二分,是这个数据范围内比较常见的算法,还有一些其他的我都不太会,比较难的图论的一些模板算法,这里就不列举了。先了解简单的。

写不出来也比较正常。没考虑到一笔交易可以分解为每一天的交易,因为这个买卖股票是针对同一支股票来进行的。也就是说,比如说这个样例,1 2 3 4 5 ,我用 1 的价格买入,2 的价格售出,又用 2 的价格买入,用 3 的价格售出,用 3 的价格买入,用 4 的价格售出,用 4 的价格买入,用 5 的价格售出,这和我们最开始用 1 的价格买入,用 5 的价格售出的利润是相等的,拆解之后可以用贪心策略,就是每一天选择一个大于 0 的收益的交易,累加和就是答案。比一般的贪心绕了一点。我感觉。

相关推荐
NAGNIP2 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队3 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
Fanxt_Ja8 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下8 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶8 小时前
算法 --- 字符串
算法
博笙困了8 小时前
AcWing学习——差分
c++·算法
NAGNIP8 小时前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP8 小时前
大模型微调框架之LLaMA Factory
算法
echoarts8 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客8 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法