P5199 [USACO19JAN] Mountain View S

 

想清楚过程 在coding

if(a[i].r<=last) continue;  -> a[i-1].r>a[i].r ->有反例

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;
const int maxn=11e5+10;

int n;
struct node{
    int l,r;
}a[maxn];
bool cmp(node a,node b){
    return a.l<b.l || (a.l==b.l&&a.r>b.r);//!!!!!!!!!!!!!!1
}

int main()
{
    ios::sync_with_stdio(false); cin.tie(0);
    
    cin>>n;
    for(int i=1;i<=n;i++){
        int x,y;cin>>x>>y;
        a[i].l=x-y,a[i].r=x+y;
    }
    sort(a+1,a+1+n,cmp);
    
    int ans=1,last=a[1].r;
    for(int i=2;i<=n;i++)
    {
        if(a[i].r<=last) continue;//wll mare than correct ans cause i-1 may incorrect
        else ans++,last=a[i].r;
    }
    cout<<ans<<'\n';
    return 0;
}
View Code

 

 
posted @ 2023-07-28 13:33  JMXZ  阅读(8)  评论(0)    收藏  举报