1 条题解

  • 0
    @ 2025-3-8 20:43:24

    抄的洛谷大神的,有入能看懂吗?

    #include <bits/stdc++.h>
    using namespace std;
    int n,a[5001],len[5001];
    long double dp[5100];
    int main() {
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i];
        for(int i=0;i<n;i++){
            len[i]=1,dp[i]=1;
            for(int j=0;j<i;j++){
                if(a[i]<a[j]) {
                    if(len[i]==len[j]+1) dp[i]+=dp[j];
                    else if(len[i]<len[j]+ 1) len[i]=len[j]+1,dp[i]=dp[j];
                }
                else if(a[i]==a[j]) dp[j]=0;
            }
        }
        int ans=0;long double cnt=0;
        for(int i=0;i<n;i++){
            if(len[i]>ans) ans=len[i],cnt=dp[i];
            else if(len[i]==ans) cnt+=dp[i];
        }
        cout<<fixed<<setprecision(0)<<ans<<" "<<cnt;
        return 0;
    }
    
    

    信息

    ID
    72
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    82
    已通过
    13
    上传者