求助,
查看原帖
求助,
421517
棠棠棠棠棠এ楼主2021/9/1 17:12
#include<bits/stdc++.h>
using namespace std;
int a[100100],dp[100100];
int main()
{
	int n=0,len=0;
	while(cin>>a[++n]);
	n--;
	dp[++len]=a[1];
	for(int i=2;i<=n;i++)
		if(a[i]<=dp[len])
		{
			dp[++len]=a[i];
		}
		else	
		{
	    	int l=1,r=len,mid,p;
			while(l<=r)
			{
				mid=(l+r)/2;
				if(dp[mid]<=a[i])//这里改成“<”就AC了
				{
					p=mid;
					r=mid-1;
				}
				else l=mid+1;
			}
			dp[p]=a[i];
		}
	cout<<len<<endl;
	
	len=1;
	for(int i=1;i<=n;i++)
	    dp[i]=0;
	dp[len]=a[1];
	for(int i=2;i<=n;i++)
		if(a[i]>dp[len])
		{
			dp[++len]=a[i];
		}
		else
		{
	    	int l=1,r=len,mid,p;
			while(l<=r)
			{
				mid=(l+r)/2;
				if(dp[mid]>=a[i])
				{
					p=mid;
					r=mid-1;
				}
				else l=mid+1;
			}
			dp[p]=a[i];
		}
	cout<<len;
	return 0;
}
2021/9/1 17:12
加载中...