3 条题解

  • 1
    #include<algorithm>
    #include<iostream>
    using namespace std;
    int n,t,a[1005],b[1005],c[1005],bj[1005],bj2,m=-1;
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i=i+1)scanf("%d",&a[i]);
    	for(int i=1;i<=n;i=i+1)
    	{
    		b[i]=1;
    		for(int j=1;j<i;j=j+1)
    		{
    			if((a[i]>a[j])&&(b[i]<(b[j]+1)))
    			{
    				b[i]=b[j]+1;
    			}
    		}
    	}
    	for(int i=n;i>=1;i=i-1)
    	{
    		c[i]=1;
    		bj2=0;
    		for(int j=i+1;j<=n;j=j+1)
    		{
    			if((a[i]>a[j])&&(c[i]<(c[j]+1)))
    			{
    				c[i]=c[j]+1;
    			}
    		}
    		m=max(b[i]+c[i],m);
    	}
    	printf("%d\n",n-m+1);
    	return 0;
    }
    
    • 0
      #include <iostream>
      using namespace std;
      const int maxn=1e6+10;
      int dp_a[maxn],dp_b[maxn],a[maxn];
      int cnt=-1;
      int main(){
      	int n;
      	cin>>n;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      	}
      	dp_a[1]=dp_b[n]=1;
      	for(int i=2;i<=n;i++){
      		dp_a[i]=1;
      		for(int j=1;j<i;j++){
      			if(a[j]<a[i])dp_a[i]=max(dp_a[i],dp_a[j]+1);
      		}
      	}
      	for(int i=n-1;i>=1;i--){
      		dp_b[i]=1;
      		for(int j=n;j>i;j--){
      			if(a[j]<a[i])dp_b[i]=max(dp_b[i],dp_b[j]+1); 
      		}
      	}
      	for(int i=1;i<=n;i++)cnt=max(cnt,dp_a[i]+dp_b[i]-1);
      	cout<<n-cnt;
      	return 0;
      }
      
      • 0
        @ 2023-3-10 18:50:24
        #include<iostream>
        #include<cstdio>
        #include<cstring>
        using namespace std;
        int dp[1005], n, a[1005], maxn,dp2[1005];
        int main()
        {
        	cin >> n;
        	for(int i = 1;i <=n ;i++)
        		cin >> a[i];
        	for(int i = 1;i <= n;i++)
        	{
        		dp[i] = 1;
        		for(int j = 1;j < i ;j++)
        			if(a[i] > a[j])
        				dp[i] = max(dp[j] + 1, dp[i]);
        	}
        	for(int i = n;i >= 1;i--)
        	{
        		dp2[i] = 1;
        		for(int j = n;j > i ;j--)
        			if(a[i] > a[j])
        				dp2[i] = max(dp2[j] + 1, dp2[i]);
        	}
        	int sum = 0;
            for(int i = 1; i <= n; i++)
        	{
                sum = max(dp[i] + dp2[i] - 1, sum);
            }
            printf("%d\n",n - sum);
        } 
        
        • 1

        信息

        ID
        1622
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        209
        已通过
        42
        上传者