6 条题解

  • 1
    @ 2025-11-2 18:58:28
    #include<algorithm>
    #include<iostream>
    const int N=1e3+10;
    const int INF=0x3f3f3f3f;
    using namespace std;
    int n,t,a[N],b[N],c[N],d[N],e,m=-1;
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i=i+1){
    		cin>>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;
    		e=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);
    	}
    	cout<<m-1;
    	return 0;
    }
    
    
    
    • 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
        @ 2025-11-2 18:02:11
        #include <bits/stdc++.h>
        #define endl '\n'
        using namespace std;
        const int N=7e4,INF=0x3f3f3f3f,ANS=65535;
        const int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
        typedef long long LL;
        int n,ans;
        int main() {
        	ios::sync_with_stdio(false);
        	cin.tie(nullptr);cout.tie(nullptr);
        	cin>>n;
        	vector<int>a(n+1),dp1(n+1),dp2(n+1);
        	for(int i=1;i<=n;i++){
        		cin>>a[i];
        		dp1[i] = dp2[i] = 1;
        	}
        	for(int i=1;i<=n;i++)for(int j=1;j<i;j++)if(a[i]>a[j])dp1[i] = max(dp1[i],dp1[j]+1);
        	for(int i=n;i>=1;i--)for(int j=n;j>i;j--)if(a[i]>a[j])dp2[i] = max(dp2[i],dp2[j]+1);
        	for(int i=1;i<=n;i++)ans = max(ans,dp1[i]+dp2[i]);
        	cout<<ans-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
            标签
            递交数
            529
            已通过
            133
            上传者