雷达覆盖,根据每个点的位置判断他在x轴上的覆盖的线段,然后按照右端点排下序贪心扫过去一下就好
好多在x轴的问题和时间安排的问题都采取的是尽量拖延的方法【不拖延就是浪费】
#include <bits/stdc++.h>
using namespace std;
typedef pair<double,double> pii;
int n,r;
void Gao()
{
bool ok=true;
vector<pii>a;
for (int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
if (y>r) ok=false;
a.push_back(make_pair(x+sqrt( abs(r*r-y*y)),x-sqrt( abs(r*r-y*y) )));
}
sort(a.begin(),a.end());
if (!ok)
cout<<"-1"<<endl;
else
{
int ans=1;
double ed=a[0].first;
for (int i=1;i<n;i++)
if (a[i].second>ed)
ed=a[i].first,ans++;
cout<<ans<<endl;
}
}
int main()
{
int cas=1;
//freopen("a.in","r",stdin);
while (cin>>n>>r && n)
{
printf("Case %d: ",cas++);
Gao();
}
return 0;
}