E03 线性DP B3637 最长上升子序列

E03 线性DP 最长上升子序列_哔哩哔哩_bilibili

 

B3637 最长上升子序列 - 洛谷

// 线性DP O(n^2)
#include<bits/stdc++.h>
using namespace std;

const int N=5010;
int n,a[N],f[N]; //f[i]表示以 a[i] 结尾的最长上升子序列的长度

int main(){
  cin>>n;
  for(int i=1; i<=n; i++) cin>>a[i];
  for(int i=1; i<=n; i++) f[i]=1;
  
  for(int i=1; i<=n; i++)
    for(int j=1; j<i; j++)
      if(a[j]<a[i]) f[i]=max(f[i],f[j]+1);
  
  int ans=0;
  for(int i=1; i<=n; i++) ans=max(ans,f[i]);
  cout<<ans;
}

 

P4309 [TJOI2013] 最长上升子序列 - 洛谷

P4484 [BJWC2018] 最长上升子序列 - 洛谷

P3774 [CTSC2017] 最长上升子序列 - 洛谷

posted @ 2023-04-09 22:24  董晓  阅读(1029)  评论(0)    收藏  举报