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;
}```
posted @ 2026-03-04 00:57  peter_shen  阅读(9)  评论(0)    收藏  举报