2 条题解
-
103
题解三四条,细节第一条。 若是没有赞,作者两行泪!!!
#include <cmath> #include <cstdio> #include <algorithm> using namespace std; const int MAXN = 15005; int T; int N, L, W; struct node { double l, r; }P[MAXN]; int cnt; int main() { while (scanf("%d", &T) != EOF) { for (int i = 1; i <= T; i++) { scanf("%d %d %d", &N, &L, &W); cnt = 0; for (int j = 1; j <= N; j++) { double C, R; scanf("%lf %lf", &C, &R); double x = 1.0 * sqrt((1.0 * R * R) - ((W / 2.0) * (W / 2.0))); if (R * 2 <= W) continue; ++cnt; P[cnt].l = max((double)0, C - x); P[cnt].r = min((double)L, C + x); } int ans = 0; double maxr = 0.0; bool check = 0; while (maxr < L) { double nowl = maxr; for (int j = 1; j <= cnt; j++) if (P[j].l <= nowl && P[j].r > maxr) maxr = P[j].r; if (maxr == nowl) { check = 1; break; } ++ans; } if (check) printf("-1"); else printf("%d", ans); printf("\n"); } } return 0; }
- 1
信息
- ID
- 152
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 1377
- 已通过
- 483
- 上传者