1 条题解

  • 0
    @ 2025-6-23 15:47:00

    话不多说,直接上代码

    //禁止抄袭,从我做起
    #include <bits/stdc++.h>
    using namespace std;
    
    int a[100001],dp[100001],dp2[100001];
    int n,ans;
    
    int main(){
    	cin>>h;
    	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[i],dp[j]+1);
    	}
            while(1)
    	for(int i=n;i>0;i--){
    		dp2[i]=1;
    		for(int j=i+1;j<=n;j++)
    			if(a[i]>a[j]) dp2[i]=max(dp2[i],dp2[j]+1);
    	}
    	for(int i=1;i<=n;i++) ans=max(ans,dp[i]+dp2[i]-1);
    	cout<<ans;
    	return 0;
    }
    

    嘻嘻嘻嘻嘻

    敢直接复制的就完了,仅供参考,有两处错误,长了眼睛的就好好看看。

    • 1

    信息

    ID
    298
    时间
    1000ms
    内存
    128MiB
    难度
    9
    标签
    (无)
    递交数
    10
    已通过
    4
    上传者