4 条题解

  • 1
    @ 2023-4-30 16:07:22
    #include<cstdio>
    #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",m-1);
    	return 0;
    }
    
    • 0
      @ 2024-11-4 19:19:20
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1005;
      int a[N],dp[N],maxn=-114514,n;
      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[j]<a[i]){
      				dp[i]=max(dp[i],dp[j]+1);
      			}
      			maxn=max(maxn,dp[i]);
      		}
      		
      	}
      	for(int i=1;i<=n;i++){
      		
      		for(int j=1;j<i;j++){
      			if(a[j]>a[i]){
      				dp[i]=max(dp[i],dp[j]+1);
      			}
      		}
      		maxn=max(maxn,dp[i]);
      	}
      	cout<<maxn;
      }
      
      
      • 0
        @ 2023-12-10 14:51:46
        /****************************************
        Note:
        ****************************************/
        #include <queue>
        #include <math.h>
        #include <stack>
        #include <vector>
        #include <stdio.h>
        #include <iostream>
        #include <vector>
        #include <iomanip>
        #include <string.h>
        #include <cstring>
        #include <algorithm>
        #define int long long
        using namespace std;
        const int N = 1e6 + 10;
        const int INF = 0x3f3f3f3f;
        int n;
        int a[1005];
        int dp[1005];
        int maxn = -1;
        signed main(){
        	ios::sync_with_stdio(false);
        	cin.tie(0);
        	cout.tie(0);
        	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[j]<a[i])
        				dp[i] = max(dp[i],dp[j] + 1);
        		maxn = max(maxn,dp[i]);
        	}
        	for(int i=1;i<=n;i++){
        		for(int j=1;j<i;j++)
        			if(a[j]>a[i])
        				dp[i] = max(dp[i],dp[j] + 1);
        		maxn = max(maxn,dp[i]);
        	}
        	cout << maxn << endl;
        	return 0;
        }
        
        
        • 0
          @ 2023-4-1 16:39:47

          合唱队形,模板中的模板

          #include<iostream>
          #include<cstring>
          #define h using
          #define uh namespace
          #define e std
          h uh e;
          struct node{
          	int x,up,down;
          }a[1005];
          int n,maxx;
          int main(){
          	cin>>n;
          	for(int i=1;i<=n;i++){
          		cin>>a[i].x;
          		a[i].up=1,a[i].down=1;
          	}
          	for(int i=1;i<=n;i++)
          		for(int j=1;j<i;j++)
          			if(a[i].x>a[j].x)
          				a[i].up=max(a[i].up,a[j].up+1);
          	for(int i=n-1;i>=1;i--)
          		for(int j=n;j>i;j--)
          			if(a[i].x>a[j].x)
          				a[i].down=max(a[i].down,a[j].down+1);
          	for(int i=1;i<=n;i++){
          		maxx=max(maxx,a[i].up+a[i].down-1);
          	}
          	cout<<maxx<<endl;
          }
          //       nb          AC
          
        • 1

        信息

        ID
        1413
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        389
        已通过
        101
        上传者