1 条题解

  • 0
    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=1e2+10;
    int t,n,dp[N],len,a[N];
    
    void Memset()
    {
    	memset(dp,0,sizeof(0));
    	len=0;
    }
    
    int main()
    {
    	scanf("%d",&t);
    	while(t--)
    	{
    		int ans=0;
    		scanf("%d",&n);
    	    for(int i=1;i<=n;++i)
    	    {
    	    	scanf("%d",&a[i]);
    		}
    		Memset();
    		dp[++len]=a[1];
    		for(int i=2;i<=n;++i)
    		{
    			if(a[i]<dp[len])
    			{
    				dp[++len]=a[i];
    			}
    			else
    			{
    				int upd=lower_bound(dp+1,dp+len+1,a[i],greater<int>())-dp;
    				dp[upd]=a[i];
    			}
    		}
    		ans=max(ans,len);
    		
    		Memset();
    		dp[++len]=a[n];
    		for(int i=n-1;i>=1;--i)
    		{
    			if(a[i]<dp[len])
    			{
    				dp[++len]=a[i];
    			}
    			else
    			{
    				int upd=lower_bound(dp+1,dp+len+1,a[i],greater<int>())-dp;
    				dp[upd]=a[i];
    			}
    		}
    		ans=max(ans,len);
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    3120
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    15
    已通过
    6
    上传者