NSFZOJ #6033. 买股票

本文介绍了一个股票交易策略,通过每日模拟股票买卖操作实现最大化收益。利用贪心算法与数据结构优化,即使每天仅能进行一次买卖操作,也能确保最终不持有股票并获取最大利润。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSFZOJ #6033. 买股票
题目描述

蒟蒻预测了某支股票后nnn天的价格,其中第i天股价为pip_ipi,他打算利用这个赚钱。由于他实在太懒了,每天他至多只会交易1股(也就是说,他每天可以买进一股,卖出一股,或者什么都不做)。蒟蒻最开始不拥有任何股票,他希望nnn天后同样不拥有任何股票,并且赚最多的钱。他希望你帮他计算最多能赚多少钱。

输入格式

第一行一个数nnn,代表天数。

第二行nnn个数,第i个数为pip_ipi

输出格式

一个整数,表示最多赚多少钱。

样例
样例输入 1
10
1 1 1 1 2 2 2 2 2 2
样例输出 1
4
样例输入 2
9
10 5 4 7 9 12 6 2 10
样例输出 2
20
数据范围与提示

对于40%40\%40%的数据,n≤3000n\le3000n3000

对于100%100\%100%的数据,2≤n≤3000002\le n \le 3000002n300000 , 1≤pi≤1∗1061\le p_i\le 1*10^61pi1106

题目来源:CF866D

链接:http://codeforces.com/contest/866/problem/D


AC了以后才发现,这道题40分比100分难写,但容易想到(对我来说)。40分:DP,就不详细说了,还要加优化。

注意到对于一个股票,当天不买等价于当天买了再卖,因此可以假设当天卖了,然后如果要买回来还可以弥补。即每天先卖,然后取之前所有可以买的中最便宜的与他交易,赚差价。这里用堆来维护即可,这个思想其实不少见,以前有一道题说的是一条路上有几个加油站,每个加油站可以加固定数量的油,而汽车油箱无限大,问至少要加几次,其实每次经过一个加油站就->等价于获得了一次加油的机会,以后什么时候用都可以<-。这里也一样,每次卖完就获得了两次(因为还可以只买不卖)再买它的机会,每次挑最优的股票赚差价,这就是贪心之处、


代码


补充说明:任意一次买卖都必须是选两个日期,买前者卖后者,尽管题目条件是每天只能买或卖至多一次,但是我们可以不用管(为啥??)。因为你如果在某一天先卖了,又在之后买了,相当于没买也没卖,而两次买卖相当于首尾相接只留下前者买入的和后者卖出的。即a->b,b->c  <==>  a->c。因此有了贪心的策略。

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在网页设计中,为图片添加文字是一种常见的需求,用于增强视觉效果或传达更多信息。本文将介绍两种常用的方法:一种是将图片设置为背景并添加文字;另一种是利用<span>标签结合CSS定位来实现。 这种方法通过CSS实现,将图片设置为一个容器(通常是<div>)的背景,然后在容器中添加文字。具体步骤如下: 创建一个包含文字的<div>元素: 使用CSS设置<div>的背景图片,并调整其尺寸以匹配图片大小: 如有需要,可使用background-position属性调整图片位置,确保文字显示在合适位置。这样,文字就会显示在图片之上。 另一种方法是将文字放在<span>标签内,并通过CSS绝对定位将其放置在图片上。步骤如下: 创建一个包含图片和<span>标签的<div>: 设置<div>为相对定位,以便内部元素可以相对于它进行绝对定位: 设置<span>为绝对定位,并通过调整top和left属性来确定文字在图片上的位置: 这种方法的优点是可以精确控制文字的位置,并且可以灵活调整文字的样式,如颜色和字体大小。 两种方法各有优势,可根据实际需求选择。在实际开发中,还可以结合JavaScript或jQuery动态添加文字,实现更复杂的交互效果。通过合理运用HTML和CSS,我们可以在图片上添加文字,创造出更具吸引力的视觉效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值