DP,一半AC一半TLE,求助
查看原帖
DP,一半AC一半TLE,求助
1221613
wangzc2012楼主2024/7/6 19:03
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int i=1;
int dp[100005];
int h[100005];
int maxx;
int m;
int n;
int l,r,mid;
int main(){
    while (cin>>a[i]){
        maxx=0;
        for (int j=1;j<=i-1;j++){
            if (a[j]>=a[i] and dp[j]>maxx) maxx=dp[j];
        }
        dp[i]=maxx+1;
        m=max(dp[i],m);
        l=1;r=n;
        while (l<r){
            mid=(l+r)/2;
            if (h[mid]<a[i]) l=mid+1;
            else r=mid;
        }
        if (h[r]<a[i]) n++,h[n]=a[i];
        else h[r]=a[i];
        i++;
    }
    cout<<m<<'\n'<<n;
    return 0;
}

2024/7/6 19:03
加载中...