至于股票买卖|| 为何只考虑连续两天的买卖
请看图片
以p[i] 代表第i 日的股票价格, 以 d[i] 代表第i 日和第i + 1日
股票价格的差值,现认为d[i] 都为正数, 买卖和收益以及总收益我就用我那为数不多的英语单词储量凑合一下了
我们为了争取该条件下的最大收益,那么当后一天股票的价格大于
等于当天的价格,我们认为股票呈增势,我们选择当日,然后卖出
当后一天的价格不及当天的价格, 我们认为股票呈颓势, 我们不
买也不卖
现在假设d[i] 都是大于零的, 那么说明股票价格连续几天呈增势
我们举例这四天, 就是
第一天买, 第二天卖, 收益是d[1],
第二天买, 第三天卖, 收益是d[2],
第三天买, 第四天卖, 收益是d[3],
那么这几天下来, 总的收益就是 d[1] + d[2] + d[3];
现在第一天的价格是p[1], 根据这几天股票的差值,我们不难得出
p[4] = p[1] + d[1] + d[2] + d[3];
也就是说, 在现有股票买卖的条件下, 当有连续的几天股票价格
呈增势的时候, 今天买明天买的策略, 与 阶段性连续增势的第
一天买, 最后一天卖的总收益是相同的
如果说我们假设d[2]是小于零的,其余大于零,即股票第三天的价格低于第二天的价格, 同时假设第四天的价格高于第二天的价格
如果我们采取类似于第二天买, 第三天不卖的策略,
是不及第二天不买, 买第三天的, 并且在第四天卖出的策略的收
益高
所以在现有股票买卖条件的支持下, 我们因该采取如果后一天的
价格比当天高的, 当天买, 明天卖, 或者不买也不卖的策略
#include <iostream>
using namespace std;
const int N = 100010;
int p[N];
int main(){
int n;
scanf("%d", &n);
for (int i = 0; i < n; i ++) scanf("%d", &p[i]);
long long res = 0;
for (int i = 0; i + 1 < n; i ++)
if (p[i + 1] > p[i]) res += p[i + 1] - p[i];
printf("%d\n", res);
return 0;
}