最左侧一定可以向左拓展,最右侧一定可以向右拓展。
中间的点,优先向左拓展,如果左侧无法拓展,那么向右拓展,如果向右拓展影响到下一个元素,向左拓展那么注定他们两个在交集部分只能有一个胜出,依次类推的贪心
#include <bits/stdc++.h>
#define ll long long
#define INF 0x7f7f7f7f
using namespace std;
typedef pair<int,int> PII;
const int N=1e5+10;
int n,m,ans;
ll a[N],b[N];
int main() {
cin>>n;
for(int i=0; i<n; i++) {
cin>>a[i]>>b[i];
}
a[n]=INF;
ans++;//第一个一定可以向左拓展
for(int i=1; i<n; i++) {
if(a[i]-b[i]>a[i-1])ans++;//向左拓展
else if(a[i]+b[i]<a[i+1])a[i]=a[i]+b[i] ,ans++;//向右拓展
}
cout<<ans;
return 0;
}