贪心模板题
思考这题之前,首先需要明确一点:对于任何买卖操作,即便跨了n天也是一样,都可以拆分成如图的形式
{(at,at+1),(at2,at2+1)....,(atk,atk+1)},这样的集合,即可以拆分成跨度都为1天的小买卖
这样的集合中每项元素可正可负,值即为a(i+1)-a(i)的数值,后一天价格减前一天价格即可得出利润(或损失)
只要,每一项正的元素相加(赢钱的买卖),即可得出最大利润(如此操作不可能有负的小买卖在里面,因为都被分割抛弃了)
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5+10;
int n;
int sum;
int a[N];
int main()
{
cin >> n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<n;i++)
{
if(a[i]<a[i+1])
{
sum+=a[i+1]-a[i];
}
}
cout << sum << endl;
return 0;
}
标签:股票买卖,1055,int,atk,II,at2,include From: https://www.cnblogs.com/lxl-233/p/16923510.html