E03 线性DP B3637 最长上升子序列
E03 线性DP 最长上升子序列_哔哩哔哩_bilibili
// 线性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; }
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号