5 条题解
-
0
#include #include #include
using namespace std;
typedef pair<double, double> PDD; const int N = 1010; const double eps = 1e-6, INF = 1e10; // double一般定义一个eps精确值
int n, R; PDD segs[N];
int main() { bool success = true;
cin >> n >> R; for(int i = 0; i < n; i++) { int x, y; cin >> x >> y; if(y > R) { success = false; break; } double len = sqrt(R * R - y * y); segs[i] = {x + len, x - len}; //区间 按终点起点排序 } if(!success) puts("-1"); else { sort(segs, segs + n); int res = 0; double last = -INF; //***这里要定义double for(int i = 0; i < n; i++) { auto seg = segs[i]; if(seg.second > last + eps) //seg.second 是起点 { res ++; last = seg.first; // seg.first的终点 } } cout << res << endl; } return 0;}
信息
- ID
- 24
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 177
- 已通过
- 123
- 上传者