2 条题解

  • 0
    @ 2025-10-8 16:48:49
    #include <bits/stdc++.h>
    using namespace std;
    struct node{int x,y;}a[1100];
    bool cmp(node n1,node n2)
    {
        if(n1.x!=n2.x) return n1.x<n2.x;else return n1.y<n2.y;
    }
    int f[1100];
    int main() 
    {
        int n;scanf("%d", &n);
        for(int i=1;i<=n;i++) scanf("%d%d", &a[i].x, &a[i].y);
        sort(a+1, a+n+1, cmp);
        memset(f, 0, sizeof(f));
        f[n]=1;
        for(int i=n-1;i>=1;i--)
        {
            f[i]=1;
            for(int j=i+1;j<=n;j++)
                if(a[i].y>a[j].y)
                    f[i]=max(f[i], f[j]+1);
        }
        int ans=0;for(int i=1;i<=n;i++) ans=max(ans, f[i]);
        printf("%d\n", ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:41
      #include<bits/stdc++.h>
      using namespace std;
      struct node{int x,y;}a[1100];
      bool cmp(node n1,node n2)
      {
          if(n1.x!=n2.x) return n1.x<n2.x;else return n1.y<n2.y;
      }
      int f[1100];
      int main() 
      {
          int n;scanf("%d",&n);
          for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
          sort(a+1,a+n+1,cmp);
          memset(f,0,sizeof(f));
          f[n]=1;
          for(int i=n-1;i>=1;i--)
          {
              f[i]=1;
              for(int j=i+1;j<=n;j++)
                  if(a[i].y>a[j].y)
                      f[i]=max(f[i],f[j]+1);
          }
          int ans=0;for(int i=1;i<=n;i++) ans=max(ans,f[i]);
          printf("%d\n",ans);
          return 0;
      } 
      • 1

      *【动态规划:区间一维一边推】零件分组

      信息

      ID
      251
      时间
      1000ms
      内存
      128MiB
      难度
      4
      标签
      递交数
      102
      已通过
      49
      上传者