AcWing 1058. 股票买卖 V二维线性dp
原题链接
中等
作者:
kendas
,
2025-03-29 14:07:17
· 辽宁
,
所有人可见
,
阅读 1
事实上没用3维(冷静期维)也过了,因为如果要买股票,必然只能从第i-2没有股票的时候才能买,如果有股票就不需要买,其余的和上一题一样,只是初始化的时候要处理好
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int INF = 1e9;
void solve()
{
int n;cin>>n;
vector<int>a(n+1);
for(int i=1;i<=n;i++)
cin>>a[i];
vector<vector<int>>f(n+1,vector<int>(2));
f[0][0]=0;
f[1][1]=-a[1];
f[1][0]=0;
for(int i=2;i<=n;i++)
{
f[i][0]=f[i-1][0];
f[i][0]=max(f[i][0],f[i-1][1]+a[i]);
f[i][1]=f[i-1][1];
f[i][1]=max(f[i][1],f[i-2][0]-a[i]);
}
cout<<f[n][0]<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
int T = 1;
while(T --)
{
solve();
}
return 0;
}