贪心题,水过~
http://poj.org/problem?id=1328
注意以下几点:
(1)雷达所在的x轴坐标可以是小数!!!
(2)输出格式一定注意Case的C字母大写
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
#include<math.h>
#include<string>
#include<string.h>
#include<map>
#include<unordered_map>
#include<unordered_set>
#include<set>
#include<stack>
#include<sstream>
//#include <Eigen/Dense>
//#include <Eigen/Geometry>
//using namespace Eigen;
using namespace std;
struct node
{
double x, y;
bool operator <(node n)
{
return y < n.y;
}
}nd1[1005], nd2[1005];
int main()
{
int n, t = 1;
double d;
while (cin >> n >> d && n)
{
int ok = 0;
for (int i = 0; i < n; i++)
{
cin >> nd1[i].x >> nd1[i].y;
if (nd1[i].y > d)
ok = 1;
}
if (ok)
{
printf("Case %d: %d\n", t++, -1);
continue;
}
for (int i = 0; i < n; i++)
{
nd2[i].x = nd1[i].x - sqrt(d*d - nd1[i].y * nd1[i].y);
nd2[i].y = nd1[i].x + sqrt(d*d - nd1[i].y * nd1[i].y);
}
sort(nd2, nd2 + n);
int cnt = 1;
double end = nd2[0].y;
for (int i = 1; i < n; i++)
{
if (end >= nd2[i].x)
continue;
cnt++;
end = nd2[i].y;
}
printf("Case %d: %d\n", t++, cnt);
}
return 0;
}