1 条题解

  • 0
    @ 2025-4-14 18:45:30

    C++ :

    #include <cstdio>
     
    using namespace std;
     
    int n=1,data[30002],m[30002],ans,now;
    bool killed[30002];
     
    int main()
    {
        while(scanf("%d",&data[n])==1){m[n]=1;n++;}n--;
        for(int i=n-1;i>=1;i--)
        {
            for(int j=n;j>=i+1;j--)
                if(data[i]>=data[j]&&m[i]<m[j]+1)
                    m[i]=m[j]+1;
            if(ans<m[i]) ans=m[i];
        }
        printf("%d\n",ans);
        ans=0;
        for(int i=1;i<=n;i++)
        {
            if(killed[i]) continue;
            killed[i]=1;
            ans++;now=data[i];
            for(int j=i+1;j<=n;j++)
            {
                if(killed[j]==1||data[j]>now) continue;
                now=data[j];
                killed[j]=1;
            }
        }
        printf("%d",ans);
        return 0;
    }
    
    • 1

    信息

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