E24 线性DP 股票买卖含冷冻期

视频链接:https://www.bilibili.com/video/BV15v411r7WD/

#include <iostream>
#include <cstring>
using namespace std;

const int N = 100010;
int w[N],f[N][2];

int main(){
  int n; cin>>n;
  for(int i=1; i<=n; i++) cin>>w[i];
  
  f[0][0]=0; f[1][0]=0; f[1][1]=-w[1]; 
  
  for(int i=2; i<=n; i++){   
    f[i][0]=max(f[i-1][0],f[i-1][1]+w[i]);
    f[i][1]=max(f[i-1][1],f[i-2][0]-w[i]);
  }
  cout<<f[n][0];
}
#include<iostream>
#include<cstring>
using namespace std;

const int N = 100010;
int w[N],f[N][3];

int main(){
  int n; cin>>n;
  for(int i=1; i<=n; i++) cin>>w[i];
  
  f[0][1]=-1e7; f[0][0]=-1e7; f[0][2]=0;
  
  for(int i=1; i<=n; i++){
    f[i][1]=max(f[i-1][1],f[i-1][2]-w[i]);
    f[i][0]=f[i-1][1]+w[i];
    f[i][2]=max(f[i-1][0],f[i-1][2]);
  }
  printf("%d\n",max(f[n][0],f[n][2]));
}

 

posted @ 2023-04-10 10:10  董晓  阅读(240)  评论(0编辑  收藏  举报