3 条题解

  • 5
    @ 2022-8-2 11:11:44
    #include<bits/stdc++.h>
    using namespace std;
    long i,n,a[10005],f[10005],j,ma;
    long read()
    {
    	long x=0,m=1;
    	char ch=getchar();
    	while(ch<'0'||ch>'9'){
    		if(ch=='-')m=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
       {
    		x=x*10+ch-48;
    		ch=getchar();
    	}
    	return x*m;
    }
    void write(long x) {
    	if(x<0){
    		putchar('-');
    		write(-x);
    		return;
    	}
    	if(x>=10)write(x/10);
    	putchar(x%10+'0');
    }
    int main()
    {
    	n=read();
    	for(i=1;i<=n;i++)a[i]=read();
    	for(i=1;i<=n;i++)
    	{
    		f[i]=1;
    		for(j=1;j<i;j++)
    			if(a[i]>a[j])f[i]=max(f[i],f[j]+1);
    		ma=max(ma,f[i]);
    	}
    	cout<<ma;
    	return 0;
    }dp
    • 4
      @ 2023-12-23 9:11:24

      从升级版改变的,所以会有点奇怪(升级版要输出路径)

      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
        int n,b[5002][3],l,maxn=-1,i,j;
        cin>>n;
        for(i=1;i<=n;++i)
        {
        	cin>>b[i][1];
        	b[i][2]=1;
        }
        for(i=n-1;i>=1;--i)
        {
        	l=0;
        	for(j=i+1;j<=n;++j)
        	{
        	  if(b[j][1]>b[i][1]&&b[j][2]>l)
        	  l=b[j][2];
          }
      	if(l>0)
      	b[i][2]=l+1;
        }
        for(i=1;i<=n;++i)
        maxn=max(maxn,b[i][2]);
        cout<<maxn;
        return 0;
      }
      
      • 0
        @ 2021-11-26 21:48:09
        for(int i=1;i<=n;++i)
        {
            dp[i]=1;
            for(int j=1;j<i;++j)
                if(a[j]<a[i])
                    dp[i]=max(dp[i],dp[j]+1);
            ans=max(ans,dp[i]);
        }
        
        • 1

        信息

        ID
        11
        时间
        1000ms
        内存
        256MiB
        难度
        6
        标签
        (无)
        递交数
        306
        已通过
        95
        上传者