20求助
查看原帖
20求助
513021
wccc_c楼主2024/10/9 21:27
#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; 
}

2024/10/9 21:27
加载中...