3 条题解

  • 2
    @ 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;
    }
    
    • 2
      @ 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
        @ 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
        • 1

        信息

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