全部评论 1

  • 不理解,为什么不能按左端点升序排,一样再按右端点降序排,这样从第一块的右端点开始打,贪心覆盖。

    然后被hack了,至今未想到hack

    昨天 来自 广东

    0
    • #include<bits/stdc++.h>
      using namespace std;
      #define int long long
      int n,d;
      struct node{
          int l,r;
      };
      node a[200009];
      bool cmp(node x,node y){return x.l == y.l?x.r<y.r:x.l<y.l;}
      signed main(){
          cin>>n>>d;
          for(int i = 1;i<=n;++i){
              cin>>a[i].l>>a[i].r;
          }
          sort(a+1,a+n+1,cmp);
          int cnt = 1,mx = a[1].r+d-1;
          for(int i = 2;i<=n;++i){
              if(a[i].l<=mx) continue;
              cnt++;
              mx = a[i].r+d-1;
          }
          cout<<cnt;
      }
      

      昨天 来自 广东

      0
暂无数据

提交答案之后,这里将显示提交结果~

首页