题解
2024-03-17 21:51:56
发布于:陕西
3阅读
0回复
0点赞
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Node{
double s,f; //注意用 double
}a[1005];
bool cmp(Node x,Node y){
return x.s<y.s;
}
int main(){
int n;
double t;
scanf("%d%lf",&n,&t);
for(int i=0;i<n;i++){
double b,l;
scanf("%lf%lf",&b,&l);
a[i].s=b-l/2; //左端点
a[i].f=b+l/2; //右端点
}
sort(a,a+n,cmp);
int ans=2; //最左与最右,初值直接赋 2
for(int i=1;i<n;i++){
if(a[i].s-a[i-1].f>t)ans+=2;//差距大于t
if(a[i].s-a[i-1].f==t)ans++; //差距等于t
}
printf("%d",ans);
return 0; //完结撒花
}
这里空空如也
有帮助,赞一个