wccc_c @ 2024-10-09 21:27:49
#include<bits/stdc++.h>
using namespace std;
int n;
int dat[100001],dp[100001];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>dat[i];
}
//dp[1]=dat[1];
int len=0;
for(int i=1;i<=n;i++)
{
if(dat[i]>dp[len])dp[++len]=dat[i];
else
{
int l=0,r=n,mid;
while(l<r)
{
mid=(l+r)/2;
if(dp[mid]>dat[i])r=mid;
else l=mid+1;
}
dp[l]=dat[i];
}
}
cout<<len;
return 0;
}
by ZYFERIC @ 2024-10-19 17:18:53
#include<bits/stdc++.h>
using namespace std;
int main(){
int v,p,dp[5005]={0},a[5005],n,nmax=-1005;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
dp[i]=1;
for(int j=1;j<i;j++){
if(a[j]<a[i])dp[i]=max(dp[i],dp[j]+1);
if(nmax<dp[i])nmax=dp[i];
}
}
cout<<nmax;
}
@wccc_c dp板子