2019年华南理工大学程序设计竞赛(春季赛)I:炒股(贪心)

【题解】

在一段连续上升序列中,最大值减去最小值就是最多能赚的钱,求和即可。

【代码】

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll a[500005];
int main()
{
    int n,i; scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%lld",&a[i]);
    int pos=1;
    ll sum=0;
    while(pos<=n){
        for(i=pos+1;;i++){
            if(a[i]<=a[i-1]) break;
            if(a[pos]>a[i-1]) pos=i-1;
        }
        sum+=a[i-1]-a[pos];
        pos=i;
    }
    printf("%lld",sum);
	return 0;
}

【题面】

链接:https://ac.nowcoder.com/acm/contest/625/I
来源:牛客网

炒股

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

攒机一时爽,一直攒机一直爽。

沉迷攒机的胡老师很快就发现,他每天只能靠吃泡面过活了。为了改善伙食,同时继续攒机大业,胡老师决定下海炒股。

胡老师有特别的炒股技巧。首先他会选定一支他看好的股票,然后永远只买这一支股票。此外,胡老师每天要么只买入股票要么只卖出股票,且出于某种不为人知的原因,胡老师手上最多只能持有 1 股的股票。胡老师每天会根据当天的股价及手上的持股数决定是买入还是卖出股票,需要注意的是,只要胡老师选择了买入或卖出,那么一定可以按当天的价格买入或卖出股票。

炒股需要本金,但胡老师的钱都拿去攒机了,于是他去找 CC 借了一大笔钱(这笔钱可以视为无穷多),并约定 n 天之后归还。另一方面,为最大化 n 天内的收益,胡老师通过不为人知的 py 交易获取了接下来 n 天每天的股票价格。

在一开始,胡老师手上没有持有股票。胡老师想知道,在n天之后他最多能靠炒股赚多少钱。

输入描述:

第一行是一个整数n (1≤n≤5×105)n (1≤n≤5×105),表示天数。

接下来 n 行给出了接下来 n 天内胡老师看好的股票每天的价格,其中第 i 行是一个整数 ai (1≤ai≤106)ai (1≤ai≤106),表示该股票在第 i 天的价格。

输出描述:

输出一行一个整数 ans,表示 n 天之后胡老师最多能赚的钱数。

输入

5
1
3
2
6
4

输出

6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值