题解

1 条题解

  • 1
    @ 2022-08-10 21:20:36
    #include<bits/stdc++.h>
    using namespace std;
    int b[1000005],a[1000005];
    int n,m,x,k,ans=0;
    int work(int x)
    {
        int l=1,r=ans,mid;
        while(l<=r)
        {
            mid=(l+r)>>1;
            if(b[mid]>x)
                r=mid-1;
            else
                l=mid+1;
        }
        return l;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++)
            scanf("%d",&a[i]);
        for(int i=1; i<=n; i++)
            for(int j=2; j>=1; j--)
            {
                x=a[i]*j;
                if(x<m)
                    continue;
                k=work(x);
                b[k]=x;
                ans=max(ans,k);
            }
        printf("%d\n",ans);
        return 0;
    }
    
    
  • 1

信息

ID
1491
难度
8
分类
分治二分查找动态规划 点击显示
标签
递交数
13
已通过
2
通过率
15%
上传者