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; }

浙公网安备 33010602011771号