求助,tle45分
查看原帖
求助,tle45分
837690
zyh_20091101楼主2024/10/19 17:14
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5+5;
int a[N];
int dp[N][2];
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
int main(){
    int n; 
	n=read();
    for(int i=1;i<=n;i++)
        a[i]=read();
    for(int i=1;i<=n;i++){
        dp[i][1]=1;
        for(int j=1;j<i;j++){
            if(a[i]!=a[j])
                dp[i][1]=max(dp[i][1],dp[j][0]+1);
            else if(a[i]==a[j])
                dp[i][0]=max(dp[i][0],dp[j][1]+1);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++)
        ans=max(ans,dp[i][0]);
    cout<<ans;
    return 0;
 }
2024/10/19 17:14
加载中...