1172: PIPI的高速公路
本题是区间贪心的一种:在满足每个区间中至少有一个点情况下,最少能选择多少个点?
#include <bits/stdc++.h>
using namespace std;
struct node{
double l,r;
}T[1005];
bool cmp(node a, node b ){
return a.r<b.r;
}
int main(){
int L,D, n;
while(scanf("%d%d%d",&L,&D,&n)!=EOF){
int x,y;
for(int i=0;i<n;i++){
scanf("%d%d",&x,&y);
T[i].l= x - sqrt(D*D-y*y);
T[i].r= x + sqrt(D*D-y*y);
}
sort(T,T+n,cmp);
int ans=0;
double r_current = T[0].r;
for(int i=1;i<n;i++){
if( T[i].l<=r_current){
}
else{
r_current=T[i].r;
ans++;
}
}
ans++;
printf("%d\n",ans);
}
return 0;
}```

浙公网安备 33010602011771号