6 条题解

  • 0
    @ 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;
    }
    
    
    
    • 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-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
              @ 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
            标签
            递交数
            565
            已通过
            144
            上传者