USACO5.1.1 Fencing the Cows (fc)
2014-12-10 09:35
225 查看
裸的凸包。
graham-scan水过。
graham-scan水过。
/* ID:shijiey1 PROG:fc LANG:C++ */ #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> using namespace std; struct Point { double x, y; }; double dist(Point a, Point b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); } double multi(Point a, Point b, Point o) { // ab X ac return (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x); } int n; Point p[10010]; int cmp(Point a, Point b) { double t = multi(a, b, p[0]); if (fabs(t) < 1e-8) return dist(p[0], a) < dist(p[0], b); return t > 0; } Point stack[10010]; int top = 0; void grahamScan() { int t = 0; for (int i = 1; i < n; i++) { if (p[i].y < p[t].y || (p[i].y == p[t].y && p[i].x < p[t].x)) t = i; } swap(p[0], p[t]); sort(p + 1, p + n, cmp); stack[0] = p[0]; stack[1] = p[1]; stack[2] = p[2]; top = 2; for (int i = 3; i < n; i++) { while (top && multi(p[i], stack[top], stack[top - 1]) >= 0) { top--; } stack[++top] = p[i]; } } int main() { freopen("fc.in", "r", stdin); freopen("fc.out", "w", stdout); scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%lf %lf", &p[i].x, &p[i].y); } grahamScan(); stack[top + 1] = stack[0]; //4 5 6 7 top=3 double ans = 0; for (int i = 0; i <= top; i++) { ans += dist(stack[i], stack[i + 1]); } printf("%.2lf\n", ans); return 0; }
相关文章推荐
- usaco5.1.1 Fencing the Cows
- USACO5.1.1 Fencing the Cows(fc)
- 洛谷 P2742 [USACO5.1]圈奶牛Fencing the Cows
- USACO Section 5.1 Fencing the Cows - 凸包模板题~~
- [USACO5.1]圈奶牛Fencing the Cows(凸包模板)
- usaco fencing the cows
- Fencing the Cows
- 【USACO 5.1.1】Fencing the Cows
- USACO 5.1 fencing the cows——计算几何/凸包模板
- Fencing the Cows [USACO]
- 计算几何 usaco Fencing the Cows 圈奶牛
- 凸包——Luogu2742 [USACO5.1]圈奶牛Fencing the Cows
- Fencing the Cows_usaco 5.1_凸包
- 太感动了!第一次自己打出了USACO的题~ [USACO5.1]圈奶牛Fencing the Cows
- P2742 [USACO5.1]圈奶牛Fencing the Cows
- C++&Pascal——【USACO 5.1.1】——Fencing the Cows
- [USACO5.1]Fencing the Cows
- USACO Section 5.1 Fencing the Cows(凸包)
- USACO 5.1 Fencing the Cows(凸包)
- Section 5.1 Fencing the Cows