看到有很多人90分 WA#9,ZLT猜测了一下原因:假设有两个区间 114514 214747,和274748 1919810,这两个区间也是可以合并的,因此,我们只需要把更新左端最大值时将 > 改成 >= 即可。

2 条评论

  • @ 2022-12-10 7:06:29

    WA #4

    • @ 2022-12-6 20:50:33
      #include<bits/stdc++.h>
      using namespace std;
      struct node{
          long long x,y;
      }a[100100];
      int n;
      long long k;
      bool cmp(node aa,node bb)
      {
          return aa.x<bb.x;
      }
      int main()
      {
          scanf("%d",&n);
          for(register int i=1;i<=n;++i)
            scanf("%lld%lld",&a[i].x,&a[i].y);
          sort(a+1,a+n+1,cmp);
          a[n+1].x=a[n+1].y=1e12;
          k=a[1].y;
      //    for(register int i=1;i<=n;++i)
      //      printf("%lld %lld\n",a[i].x,a[i].y);
          for(register int i=2;i<=n+1;++i)
          {
              if((a[i].x-1)<=k)
              {
                  k=max(k,a[i].y);
                  a[i].x=min(a[i].x,a[i-1].x);
              }
              else
              {
                  printf("%lld %lld\n",a[i-1].x,k);
                  k=a[i].y;
              }
          }
          return 0;
      }
      

      看一下我的?

      👍 3
      • 1