5 条题解

  • 1
    @ 2023-4-30 16:12:55
    #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
      @ 2025-4-13 20:27:09

      #include<bits/stdc++.h> using namespace std; const int N=1e5; const int INF = 0x3f3f3f3f; typedef long long LL; int a[N],n,dp1[N],dp2[N],maxx = -INF;

      int main(){ cin >>n; for(int i = 1;i<=n;i++){ cin >> a[i]; } for(int i = 1;i<=n;i++){ dp1[i] = 1; for(int j = 1;j<i;j++){ if(a[j]<a[i]){ dp1[i] = max(dp1[i],dp1[j]+1); } for(int i = n;i>=1;i--){ dp2[i] = 1; for(int j = i+1;j<=n;j++){ if(a[j]<a[i]){ dp2[i] = max(dp2[i],dp2[j]+1); maxx = max(maxx,dp1[i] + dp2[i]-1); } } } } } cout << n-maxx; return 0; }

      • 0
        @ 2025-4-13 20:26:47

        #include<bits/stdc++.h> using namespace std; const int N=1e5; const int INF = 0x3f3f3f3f; typedef long long LL; int a[N],n,dp1[N],dp2[N],maxx = -INF;

        int main(){ cin >>n; for(int i = 1;i<=n;i++){ cin >> a[i]; } for(int i = 1;i<=n;i++){ dp1[i] = 1; for(int j = 1;j<i;j++){ if(a[j]<a[i]){ dp1[i] = max(dp1[i],dp1[j]+1); } for(int i = n;i>=1;i--){ dp2[i] = 1; for(int j = i+1;j<=n;j++){ if(a[j]<a[i]){ dp2[i] = max(dp2[i],dp2[j]+1); maxx = max(maxx,dp1[i] + dp2[i]-1); } } } } } cout << n-maxx; return 0; }

        • 0
          @ 2023-9-2 14:50:46
          #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
            标签
            递交数
            318
            已通过
            83
            上传者