UVA 10382 Watering Grass
2013-06-09 21:49
381 查看
其实题目是区间覆盖.
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <memory.h> #include <limits.h> using namespace std; const int maxn = 10010; struct interval{ double l, r; bool operator<(const interval & rhs)const{ return l < rhs.l; } }its[maxn]; int n; double l, w; int main(){ while (~scanf("%d%lf%lf", &n, &l, &w)){ int m = 0; for (int i = 0; i < n; ++i){ double p, t; scanf("%lf%lf", &p, &t); if(w / 2 < t){ double r = sqrt(t * t - w * w / 4.0); double x = p - r; double y = p + r; its[m].l = x; its[m++].r = y; } } sort(its, its + m); double minl = its[0].l, maxr = its[0].r; int ans = 1; for (int i = 0; i < m; ){ int j = i, idx = -1; double maxRight = INT_MIN; while(j < m && its[j].l <= maxr){ if(its[j].r > maxRight && its[j].r > maxr){ maxRight = its[j].r; } ++j; } if(j == i)break; i = j; if(maxRight != INT_MIN){ if(maxr <l){ ans++; } maxr = maxRight; } } if(minl <= 0 && maxr >= l){ printf("%d\n", ans); }else{ printf("-1\n"); } } return 0; }
相关文章推荐
- UVa 10382 - Watering Grass
- UVA 10382 Watering Grass
- uva 10382 - Watering Grass
- UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】
- uva10382 - Watering Grass(给草浇水)
- UVa 10382 - Watering Grass
- uva 10382 Watering Grass
- UVa 10382 - Watering Grass (贪心—区间覆盖)
- UVa 10382 - Watering Grass
- uva 10382 Watering Grass
- UVa:10382 Watering Grass
- uva 10382 Watering Grass_贪心
- uva 10382 Watering Grass_贪心
- UVA 10382(p79)----Watering Grass
- UVA 10382 Watering Grass
- UVa 10382 - Watering Grass(贪心算法)
- UVa 10382 Watering Grass (区间覆盖贪心问题+数学)
- UVA 10382 Watering Grass (贪心 + 区间覆盖问题)
- UVa 10382 Watering Grass
- UVa 10382 - Watering Grass(贪心算法,区间覆盖问题)