【题解】
在一段连续上升序列中,最大值减去最小值就是最多能赚的钱,求和即可。
【代码】
#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