EOJ 1189/POJ 1113/HDU 1348 Wall
3 月,跳不动了?>>> 题目简介 给定平面上的n个点及半径r,求圆的周长与凸包周长之和。 说明 记录一下Graham求凸包的模板。 #include <bits/stdc++.h> using namespace std ; const double PI = acos (- 1.0 ); const int maxn = 1005 ; struct point { int x, y;}p[maxn]; int s[maxn], top; inline int cross(point p0, point p1, point p2) { return (p1.x-p0.x) * (p2.y-p0.y) - (p1.y-p0.y) * (p2.x-p0.x); } inline double dis(point p1, point p2) { return sqrt ((p2.x-p1.x)*(p2.x-p1.x) + (p2.y-p1.y)*(p2.y-p1.y)); } inline bool cmp(point p1, point p2) { int c = cross(p[ 0 ], p1, p2); if (c > 0 ) return 1 ; else if (!c && dis(p[ 0 ], p1) < dis(p[ 0 ], p2)) return 1 ;